我知道这很长,但请耐心等待.问题很容易理解,只需要写一些文字就可以完全解释它.
现在我收到了这个错误
Error: [$interpolate:noconcat] Error while interpolating:
Strict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.
See http://docs.angularjs.org/api/ng.$sce
Run Code Online (Sandbox Code Playgroud)
我已经完成了文档中的所有阅读,但我仍然无法找到解决问题的方法.
我在私有在线源上使用$ http.get,其数据类似于json文件的形式(因此我无法修改数据).数据如下所示:
...
"items": [
{
"kind": "youtube#searchResult",
"etag": "\"N5Eg36Gl054SUNiWWc-Su3t5O-k/A7os41NAa_66TUu-1I-VxH70Rp0\"",
"id": {
"kind": "youtube#video",
"videoID": "MEoSax3BEms"
},
},
{
"kind": "youtube#searchResult",
"etag": "\"N5Eg36Gl054SUNiWWc-Su3t5O-k/VsH9AmnQecyYBLJrl1g3dhewrQo\"",
"id": {
"kind": "youtube#video",
"videoID": "oUBqFlRjVXU"
},
},
...
Run Code Online (Sandbox Code Playgroud)
我正在尝试将每个项目的videoId插入到嵌入YouTube视频的HTML iframe中.在我的controller.js文件中,我在$ http.get之后设置了promise对象
$http.get('privatesource').success(function(data) {
$scope.videoList = data.items;
});
Run Code Online (Sandbox Code Playgroud)
所以现在变量"$ scope.videoList"被映射到data.items,它有很多视频元素.在我的HTML文件中,我可以使用查找每个视频的videoID
<ul class="videos">
<li ng-repeat="video in videoList">
<span>{{video.id.videoID}}</span>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这列出了所有的videoID.但是,如果我尝试将这些值连接到URL(例如https://youtube.com/embed/),则它无效. …
AngularJS ng-src不适用于这个小提琴中的HTML5视频元素:http://jsfiddle.net/FsHah/5/
查看视频元素,src标记正在填充正确的src uri,但视频无法播放.
JS在这里:http://jsfiddle.net/TegFf/73/
从这个答案,我了解Angular 1.2附带启用严格上下文转义(SCE).这会影响使用ng-srcHTML5视频的表达式解析器.我知道,如果我环绕$sce.trustAsResourceUrl(videoURL)每个视频源,那么Angular将正常播放它们.但是,我从API获取了一个视频源列表.循环遍历数组中的项目,将每个源分配为a $sce.trustAsResourceUrl,然后在我的视图中循环遍历该新数组,这对我来说很昂贵.
将所有视频源分配为受信任的最有效方法是什么,而不必遍历所有视频源?我可以$sce预先指定所有视频资源吗?