使用 ng-bind-html 来自 Angular Array 的 iframe 视频

Posted

技术标签:

【中文标题】使用 ng-bind-html 来自 Angular Array 的 iframe 视频【英文标题】:Iframe video from Angular Array using ng-bind-html 【发布时间】:2016-01-20 20:08:48 【问题描述】:

我在使用 ng-bind-html 让 iframe 工作时遇到了一些麻烦。我的所有数据都在一个数组中。我一直主要使用 ng-bind-html 将其全部保存在一个地方。不过,我似乎无法让它与 iframe 一起使用。

这是我正在尝试做的一个示例。 xPlunker

如您所见,它实际上并没有做任何事情。

【问题讨论】:

请在问题中包含代码的相关部分,并具体询问您期望发生什么以及什么不起作用。 你试过我的解决方案了吗? 【参考方案1】:

你需要使用$sce:

$sce ("Strict Contextual Escaping") 是一个内置的 Angular 服务,可自动清理模板中的内容和内部资源。

外部源和原始HTML注入模板需要手动包装$sce

在本例中,我们将创建一个简单的 $sce 卫生过滤器:

Demo

.filter('sanitizer', ['$sce', [function($sce) 
     return function(content) 
          return $sce.trustAsResourceUrl(content);
      ;
]);

在模板中的使用

<div ng-repeat="item in items">
    
    <!-- Sanitize external sources -->
    <iframe ng-src="item.youtube_url | sanitizer">
    
    <!-- Sanitaize and render HTML -->
    <div ng-bind-html="item.raw_html_content| sanitizer"></div>

</div>

【讨论】:

这似乎给了我一个错误 Error: [$interpolate:interr]. 这很棒!谢谢你。只是一个旁注,您必须使用 /embed/ 否则您将收到拒绝显示的错误,因为它将“X-Frame-Options”设置为“SAMEORIGIN”。我希望在没有 $sce 的情况下以某种方式找到解决方案,但我想仅通过 html 绑定进行翻译是没有办法的。

以上是关于使用 ng-bind-html 来自 Angular Array 的 iframe 视频的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ng-bind-html 插入 Angular 1.5 组件

如何使 ng-bind-html 编译 angularjs 代码

ng-bind-html指令和$sce服务

angularjs中使用ng-bind-html和ng-include

angularjs ng-bind-html的用法总结

在使用 AngularJS ng-bind-html 时从 json 数据中获取 img src