Ich versuche, ein Hintergrundbild mithilfe des Winkels auf ein Div anzuwenden ng-style
(ich habe zuvor eine benutzerdefinierte Direktive mit demselben Verhalten ausprobiert), aber es scheint nicht zu funktionieren.
<nav
class="navigation-grid-container"
data-ng-class="{ bigger: isNavActive == true }"
data-ng-controller="NavigationCtrl"
data-ng-mouseenter="isNavActive = true; $parent.isNavActive = true"
data-ng-mouseleave="isNavActive = false; $parent.isNavActive = false"
data-ng-show="$parent.navInvisible == false"
data-ng-animate="'fade'"
ng-cloak>
<ul class="navigation-container unstyled clearfix">
<li
class="navigation-item-container"
data-ng-repeat="(key, item) in navigation"
data-ng-class="{ small: $parent.isNavActive, big: isActive == true }"
data-ng-mouseenter="isActive = true; isInactive= false"
data-ng-mouseleave="isActive = false; isInactive= true">
<div data-ng-switch on="item.id">
<div class="navigation-item-default" data-ng-switch-when="scandinavia">
<a class="navigation-item-overlay" data-ng-href="{{item.id}}">
<div class="navigation-item-teaser">
<span class="navigation-item-teaser-text" data-ng-class="{ small: isScandinavia }">{{item.teaser}}</span>
</div>
</a>
<span class="navigation-item-background" data-ng-style="{ 'background-image': 'public/img/products/{{item.id}}/detail/wide/{{item.images.detail.wide[0]}}' }"></span>
</div>
<div class="navigation-item-last" data-ng-switch-when="static">
<div class="navigation-item-overlay">
<div class="navigation-item-teaser">
<span class="navigation-item-teaser-text">
<img data-ng-src="{{item.teaser}}">
</span>
</div>
</div>
<span class="navigation-item-background">
<img class="logo" data-ng-src="{{item.images.logo}}">
</span>
</div>
<div class="navigation-item-default" data-ng-switch-default>
<a class="navigation-item-overlay" data-ng-href="{{item.id}}">
<div class="navigation-item-teaser">
<span class="navigation-item-teaser-text">{{item.teaser}}</span>
</div>
</a>
<span class="navigation-item-background" data-ng-style="{ 'background-image': 'public/img/products/{{item.id}}/detail/wide/{{item.images.detail.wide[0]}}' }"></span>
</div>
</div>
</li>
</ul>
</nav>
Wenn ich jedoch eine Hintergrundfarbe versuche, scheint sie gut zu funktionieren. Ich habe eine Remote-Quelle und eine lokale Quelle ausprobiert http://lorempixel.com/g/400/200/sports/
, aber beide haben nicht funktioniert.
{{products.products[currenRoute].desc}}
; in html?currentRoute
ist eine Produkt-ID von der Route? Wenn dies der Fall ist, enthält der Dienst $ routeParams, wenn Sie ihn in Ihren Controller einfügen, den Verweis auf Ihre ID ($scope.productId = $routeParams.id
), vorausgesetzt, Ihre Route ist als '/ products /: id' definiert. Aber vielleicht möchten Sie dafür eine neue Frage eröffnen.currenRoute
. Es ist eine Zeichenfolge, daher habe ich eine Liste von Produkten: snippi.com/s/rznpfvo ; undcurrentRoute
es ist eine Zeichenfolge, die mit einer der IDs in der Produktliste übereinstimmt. Und da ich nicht kann, muss{{products.products.currenRoute.desc}}
ich einen anderen Weg finden ...$scope.product = _($scope.products).findWhere({id: $scope.currentRoute})
und als in Ihrer Ansicht :<span>{{product.title}}</span>
. Verwenden wir jedoch keine Kommentare als Chat. Stellen Sie eine neue Frage.Es ist möglich, dynamische Werte auf verschiedene Arten zu analysieren.
Interpolation mit doppelt geschweiften Klammern:
ng-style="{'background-image':'url({{myBackgroundUrl}})'}"
String-Verkettung:
ng-style="{'background-image': 'url(' + myBackgroundUrl + ')'}"
ES6-Vorlagenliterale:
ng-style="{'background-image': `url(${myBackgroundUrl})`}"
quelle
data-ng-style="{'background-image':'url(img/products/{{product.img}})'}"
url()
der Browser den Wert möglicherweise ablehnt und nicht festlegt, wenn Sie eine falsche Syntax verwenden (z. B. in einfachen Anführungszeichen ).Wenn Sie Daten haben, warten Sie auf die Rückgabe des Servers (item.id) und haben ein Konstrukt wie das folgende:
ng-style="{'background-image':'url(https://www.myImageplusitsid/{{item.id}})'}"
Stellen Sie sicher, dass Sie so etwas hinzufügen
ng-if="item.id"
Andernfalls haben Sie entweder zwei oder eine fehlerhafte Anfrage.
quelle
Für diejenigen, die Schwierigkeiten haben, dies mit IE11 zum Laufen zu bringen
HTML
<div ng-style="getBackgroundStyle(imagepath)"></div>
JS
$scope.getBackgroundStyle = function(imagepath){ return { 'background-image':'url(' + imagepath + ')' } }
quelle
Dies hat bei mir funktioniert, geschweifte Klammern sind nicht erforderlich.
ng-style="{'background-image':'url(../../../app/img/notification/'+notification.icon+'.png)'}"
notification.icon ist hier eine Bereichsvariable.
quelle
ng-style="{ 'background-image': getImage() }"
quelle
Nur für die Datensätze können Sie Ihr Objekt in der Steuerung auch folgendermaßen definieren:
this.styleDiv = {color: '', backgroundColor:'', backgroundImage : '' };
und dann können Sie eine Funktion definieren, um die Eigenschaft des Objekts direkt zu ändern:
this.changeBackgroundImage = function (){ this.styleDiv.backgroundImage = 'url('+this.backgroundImage+')'; }
Auf diese Weise können Sie Ihren Stil ändern.
quelle
Die Syntax wurde für Angular 2 und höher geändert:
[ngStyle]="{'background-image': 'url(path)'}"
quelle