AngularJS在插值表达式中使用URL连接多个表达式。

14 浏览
0 Comments

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/**']);

感谢任何帮助!谢谢!

0