我有一些使用ng-if
标记条件化的HTML。
<div ng-if="localVideoExists">
<video id="videoPlayer" controls src='{{localVideoSrc}}' style="max-height: 400px;" />
</div>
ng-if
指令中的条件决不会评估为true
。我认为这意味着内部HTML永远不会添加到DOM
。但是,我的Web服务器日志以
/{{localVideoSrc}}
所以,有些东西导致视频标签突然存在(虽然我从未在DOM
中找到它)并且它正在基于尚未评估的Angular模板字符串{{1创建Web请求}}。我似乎无法阻止这种行为。实际上,我控制器的第一行是:
{{localVideoSrc}}
我现在也禁用了任何功能,将$scope.localVideoExists = false;
设置为localVideoExists
。
任何见解都将受到赞赏!
答案 0 :(得分:3)
原因是DOM
加载后的Angular加载。因此,在激活Angular之前,HTML会被解析并执行。因此,浏览器会在ng-if
正文中加载HTML并请求{{localVideoSrc}}
。
要防止出现此类行为,请使用ng-src
:https://docs.angularjs.org/api/ng/directive/ngSrc
由于安全性,您还需要使用$sce服务。
答案 1 :(得分:2)
使用ng-src
代替src
<div ng-if="localVideoExists">
<video id="videoPlayer" controls ng-src='{{localVideoSrc}}' style="max-height: 400px;" />
</div>