我知道这很长,但请耐心等待。这个问题很容易理解,只需要写一些文字来充分解释它。
现在我收到这个错误
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
我已经阅读了文档中的所有内容,但仍然找不到解决我的问题的方法。
我在私人在线资源上使用 $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"
},
},
...
我正在尝试将每个项目的 videoId 插入到嵌入 YouTube 视频的 HTML iframe 中。在我的 controller.js 文件中,我在 $http.get 之后设置了 promise 对象
$http.get('privatesource').success(function(data) {
$scope.videoList = data.items;
});
所以现在变量“$scope.videoList”被映射到data.items,里面有很多视频元素。在我的 HTML 文件中,我可以通过使用检索每个视频的 videoID
<ul class="videos">
<li ng-repeat="video in videoList">
<span>{{video.id.videoID}}</span>
</li>
</ul>
这列出了所有的videoID。但是,如果我尝试将这些值连接到一个 URL,例如https://youtube.com/embed/,则它不起作用。
<div ng-repeat="video in videoList">
<iframe id="ytplayer" type="text/html" width="640" height="360"
ng-src="https://www.youtube.com/embed/{{video.id.videoId}}"
frameborder="0" allowfullscreen></iframe>
</div>
有没有办法可以将 videoID 插入到 youtube URL 中?我已经尝试使用 $sceDelegateProvider 将其列入白名单,如下所示,但它仍然不起作用
$sceDelegateProvider.resourceUrlWhitelist([
'self',
'https://www.youtube.com/**']);
任何帮助表示赞赏。谢谢!