ich eine Dienstleistung, die Bild-URL zurückgibt, und es wird mit dem folgenden Code aufgerufen:AngularJS - ng-Stil nicht css Hintergrund Eigenschaft nicht aktualisiert
angular.forEach(results, function (item) {
item.img = "/images/searchItem.jpg";
$http.post("https://my.api.com/?id=" + item.id).success(
function (url) {
item.img = url;
});
});
auf meiner Sicht habe ich mit ng ein Bild haben -src Attribut, das perfekt wie so gearbeitet:
<img ng-src="{{item.img}}">
Dann anstelle Hintergrund-Bild auf einem SPAN zu verwenden, habe ich mich entschlossen hat:
<span ng-style="{'background':'transparent url({{item.img}})'}"></span>
funktioniert nun der Fluss nur auf dem ersten Lauf, nach, dass ich sehen kann (in der Konsole) die folgende html
<span ng-style="{'background':'transparent url(http://expertsimages.liveperson.com/images/rating/rate10.gif)'}" style="background-image: url(https://fb.lp-chat.com/images/searchItem.jpg); background-color: transparent; background-position: initial initial; background-repeat: initial initial;"></span>
, die anzeigt, dass die Variable aktualisiert, aber die HTML-Datei auf seinen ursprünglichen Zustand noch.
Ich habe versucht, apply/digest auf post Erfolg, aber bekam einen Fehler $ Digest bereits in Bearbeitung (die Sinn machen). Das Problem ist, dass nach einem normalen Digest (zum Beispiel bei anderen Änderungen) der Stil angewendet wird und ich das richtige Bild sehe.
Was fehlt mir hier?
Update: Ich habe ein JS fiddle erstellt, das dieses Problem demonstriert ... sieht aus wie ein Fehler in dem Winkel mir.
Können Sie erklären, warum das nicht funktioniert? –
Ich denke, es ist normal über den Beobachter, der in diesem Fall keine tiefe Überwachung anwendet. – Disfigure
Beispiel: Hintergrundfarbe ist immer noch gleich, auch wenn sich ihr Wert ändert, aber wenn Sie eine Farbeigenschaft hinzufügen, wird sie angewendet, weil eine neue Eigenschaft auf der ersten Ebene hinzugefügt wird. – Disfigure