我使用ng-src指令,以避免浏览器在Angular评估表达式之前请求图像。
ng-src = {{image}}将更新图像的src属性,如果表达式“image”改变。
我误解为什么ng-src指令不更新图像的路径,如果表达式(“myImage.png”)变为空(“”)。
当表达式变为空时,ng-src属性变为空,但src属性仍然是最后一个已知的src。所以它不更新图像。为什么src属性没有更新(到空的src),以便图像“消失”。
这里是一个plunker
谢谢
对此的答案是在Angular代码。这不是一个bug,它只是他们决定他们想要的行为。从第13895行开始,你可以看到这个指令代码:
原文链接:https://www.f2er.com/angularjs/145968.htmlforEach(['src','srcset','href'],function(attrName) { var normalized = directiveNormalize('ng-' + attrName); ngAttributeAliasDirectives[normalized] = function() { return { priority: 99,// it needs to run after the attributes are interpolated link: function(scope,element,attr) { attr.$observe(normalized,function(value) { if (!value) return; attr.$set(attrName,value); if (msie) element.prop(attrName,attr[attrName]); }); } }; }; });
关键是:
if(!value)return;
所以你可以看到,如果你将ng-src表达式改为一个空字符串,这将永远不会改变实际的src值。你可以解决这个问题MadScone建议。