2013-07-05 93 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}}">