当前位置: 首页 > 面试题库 >

AngularJS多个表达式通过URL插值连接

薄兴昌
2023-03-14
问题内容

我知道这很长,但是请忍受我。这个问题很容易理解,只需花一些时间就可以完全解释它。

现在我遇到这个错误

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

任何帮助表示赞赏。谢谢!


问题答案:

从1.2开始,您只能将一个表达式绑定到 [src], [ng-
src]或动作。您可以在此处了解更多信息。

尝试以下方法:

在控制器中:

$scope.getIframeSrc = function (videoId) {
  return 'https://www.youtube.com/embed/' + videoId;
};

HTML:

ng-src="{{getIframeSrc(video.id.videoId)}}"

请注意,您仍然需要将其列入白名单,否则您将获得locked loading resource from url not allowed by $sceDelegate policy



 类似资料:
  • 主要内容:AngularJS 表达式,AngularJS 实例,AngularJS 数字,AngularJS 实例,AngularJS 实例,AngularJS 字符串,AngularJS 实例,AngularJS 实例,AngularJS 对象,AngularJS 实例,AngularJS 实例,AngularJS 数组,AngularJS 实例,AngularJS 实例,AngularJS 表达式 与 JavaScript 表达式AngularJS 使用 表达式 把数据绑定到 HTML。 A

  • 问题内容: 有没有办法让AngularJS在模型数据中评估表达式? HTML: 模型: 最终结果将是:。 问题答案: 您可以使用该服务来插值字符串… JSFiddle

  • 我有三张桌子,桌子A,桌子B和桌子C 我想将数据从TableA列DateA迁移到TableB列DateB,仅当表B中的date字段为空时(我不想覆盖任何现有数据) 我需要使用TableC连接TableA和TableB,以匹配应按其RobotNumber更新的A行和B行。 表格a 表格c 我尝试连接这些表并执行如下更新,但查询超时:

  • 问题内容: 我正在使用Java,但出现错误插入“赋值运算符表达式”以完成表达式” 该错误的含义是什么?是否有所有Java错误消息的列表及其含义? 谢谢 问题答案: 根据此页面,您正在执行此操作 编写没有赋值运算符的赋值语句: Eclipse: 语法错误,插入“ AssignmentOperator表达式”以完成表达式 您应该知道编译错误消息与实现有关。以上适用于Eclipse编译器。太阳会说

  • 我想调度多个任务使用@调度注释使用cron表达式。我有三项工作需要在固定时间执行。例如,作业-1被安排在每天晚上11点,作业-2被安排在每天早上7点到晚上9点,间隔1小时,作业-3被安排在每1小时。所有3个计划任务都是同一应用程序的一部分。 我也尝试过同样的方法,但所有三个调度都没有发生。我的应用程序是SpringBoot应用程序。我不是新的调度。请帮帮我。下面是他我的方法 application

  • 问题内容: 我有一个Python正则表达式,其中包含一个可以出现零次或多次的组-但是当我之后检索组列表时,仅出现最后一个。例: () 这将返回列表(“ g”,) 我需要它返回(’a’,’b’,’c’,’d’,’e’,’f’,’g’,) 那可能吗?我该怎么做? 问题答案: 除了道格拉斯·里德(Douglas Leeder)的解决方案之外 ,以下是解释: 在正则表达式中,组数是固定的。在组后面放置一个