2013-07-05 38 views
12

Tôi sử dụng ng-src để tải hình ảnh. Giá trị được nạp từ một số biến phạm vi, như thế này:AngularJS không cập nhật img src khi thay đổi mô hình

<img ng-src="{{currentReceipt.image}}"/> 

Vấn đề của tôi là khi tôi chạy delete $scope.currentReceipt, nó làm cho ng-src thuộc tính rỗng nhưng không phản ánh nó trong src thuộc tính. Vì vậy, kết quả là tôi tiếp tục nhìn thấy hình ảnh mà tôi cần phần giữ chỗ trống.

Làm cách nào để xử lý?

+0

Đặt nó trong một plunkr –

+0

trùng lặp có thể xảy ra của [trống ng-src không cập nhật hình ảnh] (http://stackoverflow.com/questions/22092687/empty-ng-src-doesnt-update-image) –

Trả lời

22

Đây là hành vi mong đợi từ chỉ thị ngSrc và ngHref. Các chỉ thị này chỉ hỗ trợ nhận ra các đường dẫn mới, nhưng khi đường dẫn không có sẵn, các chỉ thị sẽ exit silently (Tôi thấy yêu cầu kéo tại đây).

Vì vậy, một cách giải quyết có thể có thể được sử dụng ngShow cùng với ngHref để ẩn các thẻ hoàn toàn khi biến hình ảnh là không có sẵn nữa:.

<img ng-href="{{currentReceipt.image}}" ng-show="currentReceipt.image" /> 
+1

+1 để sử dụng 'ng-show', bạn cũng có thể muốn xem xét xóa hình ảnh khỏi DOM với 'ng-switch' nếu bạn muốn xóa hoàn toàn. – Terry

+0

Cảm ơn, có vẻ như tôi phải giải quyết nó theo cách bạn đề xuất. Tôi đã có một cái nhìn bên trong mã Angular quản lý ng-src chỉ thị và nhận thấy rằng quá, mà nó chỉ thoát, nếu không có giá trị nhất định, không loại bỏ giá trị src hiện có hoặc bất cứ điều gì như thế. Tôi đã quyết định sử dụng ng-class để quản lý các trường hợp như thế này. Cảm ơn! –

+0

Tôi đoán các tác giả cố tình làm chỉ thị để chỉ thoát nếu giá trị không xác định, vì việc xóa/xóa thuộc tính src làm cho trình duyệt hiển thị hình thu nhỏ hình ảnh bị hỏng, điều này thực sự không mong muốn. – Stewie

10

gọi $ phạm vi $ apply() sau khi $ phạm vi xóa. currentReceipt.

1

Các giải pháp sau đây làm việc cho tôi:

<img ng-src="{{currentReceipt.image}}" ng-show="currentReceipt.image != null" /> 
0

Bạn thực sự có thể kiểm tra độ dài và làm

<img ng-show="user.thumbnail.length > 1" class="img-circle thumb pull-left" ng-src="{{user.thumbnail}}" alt="{{user.firstname}} {{user.lastname}}"> 
Các vấn đề liên quan