Tôi có một dịch vụ mà trả về URL hình ảnh, và nó được gọi bằng cách sử dụng đoạn mã sau:AngularJS - ng-style không cập nhật css nền tài sản
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;
});
});
trên quan điểm của tôi, tôi đã từng có một hình ảnh với ng -src thuộc tính, mà làm việc một cách hoàn hảo như vậy:
<img ng-src="{{item.img}}">
Sau đó, tôi đã quyết định sử dụng background-image trên SPAN thay vì:
<span ng-style="{'background':'transparent url({{item.img}})'}"></span>
nay là dòng chảy chỉ hoạt động trên chạy đầu tiên, sau đó tôi có thể nhìn thấy (trong giao diện điều khiển) html sau
<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>
mà chỉ ra rằng biến cập nhật, tuy nhiên html vẫn còn nằm trên trạng thái ban đầu của nó.
Tôi đã cố gắng gọi áp dụng/thông báo khi đăng bài thành công, nhưng đã gặp lỗi $ thông báo đã được tiến hành (có ý nghĩa). Điều strage là sau khi một digest bình thường (ví dụ trên các thay đổi ui khác) phong cách đang được áp dụng và tôi thấy hình ảnh bên phải.
Tôi thiếu gì ở đây?
Cập nhật: Tôi đã tạo một JS fiddle chứng minh vấn đề này ... trông giống như lỗi trong góc cạnh với tôi.
Bạn có thể giải thích tại sao điều này không hiệu quả? –
Tôi nghĩ rằng nó bình thường của nó về watcher mà không áp dụng đồng hồ sâu trong trường hợp này. – Disfigure
ví dụ: backgroundColor vẫn giống nhau ngay cả khi giá trị của nó thay đổi, nhưng nếu bạn thêm thuộc tính màu, nó sẽ được áp dụng vì thuộc tính mới ở cấp đầu tiên được thêm vào. – Disfigure