2013-07-05 98 views
12

我使用ng-src加載圖像。值從一些範圍變裝,像這樣:當模型更改時,AngularJS不更新img src

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

我的問題是,當我運行delete $scope.currentReceipt,它使ng-src屬性爲空,但在src屬性不反映它。因此,我不斷看到那個圖像,我需要空的佔位符。

我該如何處理?

+0

放入的plunkr –

+0

可能的複製[空NG-SRC不更新圖片](http://stackoverflow.com/questions/22092687/empty-ng-src-doesnt-update-image) –

回答

22

這是ngSrc和ngHref指令的預期行爲。這些指令只支持識別新路徑,但是當路徑不可用時,指令將會是exit silently(我在這裏看到一個拉取請求)。

因此,一個可能的解決方法可以是使用ngShow與ngHref一起完全隱藏標記時圖像變量不再可用。

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

對於使用'ng-show'的+1,你可能還想考慮從DOM中移除圖片如果你想完全刪除它,用'ng-switch'。 – Terry

+0

謝謝,好像我必須按照你的建議來解決它。我看了Angular代碼管理ng-src指令,並注意到它只是退出,如果沒有給出值,不刪除現有的src值或類似的東西。我決定使用ng-class來管理這樣的案例。謝謝! –

+0

我猜如果值是未定義的,我認爲作者有意讓指令退出,因爲刪除/清除src屬性會使瀏覽器顯示損壞的圖像縮略圖,這並不是真正需要的。 – Stewie

10

調用$範圍$適用()之後刪除$範圍。 currentReceipt。

1

以下解決方案適用於我:

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

實際上,你可以檢查長度並做

<img ng-show="user.thumbnail.length > 1" class="img-circle thumb pull-left" ng-src="{{user.thumbnail}}" alt="{{user.firstname}} {{user.lastname}}">