Ng-src即使被ng-if隐藏也会执行
ng-src executing even if hidden by ng-if
这是我的问题的一个例子。(这是一个简化的版本,所以它可能包含拼写错误…)
# index.html
<div ng-if="testIfThereIsAnImageToDisplay">
<img ng-src="{{url}}" imgOnLoad/>
</div>
<span ng-show="imgHasError">Your image has an error</span>
我有一个包含在block中的图像。
我通过imgOnLoad指令检测错误。这部分效果很好。每次ng-src返回404(或w/e错误)时,我将imgHasError变量设置为true。我的span也显示出来了
这是我想要的正确行为。
但是,即使ng-if测试失败(因为没有图像要显示),Angular也会尝试加载ng-src的内容。
这会导致图像出现错误。所以imgHasError为真。然后显示我的span
是否有一种方法可以避免Angular加载隐藏在ng-if中的图像?
编辑我的坏家伙。我没有意识到我试图在页面的另一部分显示相同的图像。它来自那里。对不起。:)
根据文档的ng-if,如果条件被评估为false,则删除部分DOM。有一种可能性是DOM正在加载,然后计算为true/false。相比之下,ng-switch如果条件被评估为false,则不会事件加载DOM。用ng-switch代替ng-if。
请参阅此处http://jsbin.com/mupegaha/1/edit?html,js,output图片没有加载
再次检查你的testfthereisanimagetodisplay值
可以在ng-src
: condition && srcifconditiontrue : srcifconditionfalse
如果条件为false, url可能只是''
。
# index.html
<div>
<img ng-src="{{testIfThereIsAnImageToDisplay() && url || urlerror}}" imgOnLoad/>
</div>
<span ng-show="imgHasError">Your image has an error</span>
相关文章:
- javascript函数和代码隐藏函数的执行顺序
- 未执行Ajax隐藏表单提交验证
- 脚本执行,但代码隐藏不执行
- ASP.NET控件代码隐藏未执行
- 仅使用textbox方法和属性在confirm ok和cancel的代码隐藏中执行不同的代码
- 从 javascript 执行代码隐藏函数/子 (VB.NET)
- JavaScript confrmation 框,仅在单击“是”时执行代码隐藏
- 在Razor生成的隐藏字段上强制执行类型,在没有强制转换的JavaScript中接收变量
- ASP.NET 执行代码隐藏之前确认
- jQuery显示/隐藏后要执行的回调函数
- 在执行上一个的处理程序之前检查下一个事件以隐藏自动完成
- 从隐藏字段执行javascript函数
- 加载gif隐藏当所有的ajax脚本已经执行
- Ng-src即使被ng-if隐藏也会执行
- 基于隐藏变量的值执行客户端验证
- 键盘隐藏和执行链接
- 在ng重复使用隐藏元素完成后执行函数
- ASP.NET代码隐藏文件在哪里执行?(客户端或服务器)
- 隐藏第一个窗体,然后显示第二个窗体.Secnd表单执行多次提交
- JS - 如果隐藏字段的值为“x”,则执行函数