我有一些用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 模板字符串{{localVideoSrc}}
创建 Web 请求。 我似乎无法阻止这种行为。实际上,我的控制器中的第一行是:
$scope.localVideoExists = false;
我现在还禁用了任何功能,这些功能会将localVideoExists
设置为 true
.
任何见解将不胜感激!
原因是 Angular 在加载DOM
后加载。因此,在激活 Angular 之前,HTML 会被解析和执行。因此,浏览器将 HTML 加载到ng-if
体内并发出请求 {{localVideoSrc}}
.
若要防止此类行为,请使用 ng-src
: https://docs.angularjs.org/api/ng/directive/ngSrc
可能,由于安全性,您还需要使用$sce服务。
使用 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