【发布时间】:2014-06-17 18:45:34
【问题描述】:
我知道这很长,但请耐心等待。这个问题很容易理解,只需要写一些文字就能完全解释清楚。
现在我遇到了这个错误
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/**']);
感谢任何帮助。谢谢!
【问题讨论】:
标签: javascript angularjs youtube concatenation interpolation