ng-if不会阻止评估内部HTML中的URL

时间:2015-03-16 15:27:25

标签: angularjs

我有一些使用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

任何见解都将受到赞赏!

2 个答案:

答案 0 :(得分:3)

原因是DOM加载后的Angular加载。因此,在激活Angular之前,HTML会被解析并执行。因此,浏览器会在ng-if正文中加载HTML并请求{{localVideoSrc}}

要防止出现此类行为,请使用ng-srchttps://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>

请在此处查看更多https://docs.angularjs.org/api/ng/directive/ngSrc