AngularJS在插值表达式中使用URL连接多个表达式。
AngularJS在插值表达式中使用URL连接多个表达式。
虽然内容有点长,请耐心听我说。问题很容易理解,只需要写一些文字来完全解释它。
现在我遇到了这个错误
Error: [$interpolate:noconcat] Error while interpolating: Strict Contextual Escaping不允许在需要受信任的值时插值多个表达式的拼接。 请参考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,其中有很多video元素。在我的HTML文件中,我可以使用以下方式获取每个视频的videoID
- {{video.id.videoID}}
这样就列出了所有videoID。
但是如果我尝试将这些值连接到一个URL,比如https://youtube.com/embed/,它不起作用。
有没有办法将videoID插值到YouTube URL中?我已经尝试使用$sceDelegateProvider进行白名单处理,但仍然不起作用,如下所示
$sceDelegateProvider.resourceUrlWhitelist([ 'self', 'https://www.youtube.com/**']);
感谢任何帮助!谢谢!