AngularJS - ngBindHtml和'不安全'的HTML

时间:2013-12-13 04:25:53

标签: javascript angularjs

我正在尝试渲染一些不安全的HTML(基本上是带有一些内联样式的HTML代码段),并在我的视图中包含以下代码:

<div ng-repeat="snippet in snippets">
  <div ng-bind-html="snippet.content"></div>
</div>

我的所有样式都被删除了......

我听说有人使用ngBindHtmlUnsafe,但是我找不到它的引用,只是简单地把 ng-bind-html-unsafe 都没有渲染。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:8)

AngularJs 1.2中删除了ng-bind-html-escape

为了达到同样的效果,我建议你创建一个信任资源的过滤器(你应该包含$sce module):

app.filter('unsafe', function($sce) {
    return function(val) {
        return $sce.trustAsHtml(val);
    }; });

用法:

<ELEMENT ng-bind-html="htmlValue | unsafe"></ELEMENT>

您不应忘记将ngSanitize包含为应用依赖项:

angular.module('app', ['ngSanitize'])

干杯。

答案 1 :(得分:6)

您可以使用$sce.trustAsHtml绕过它。见documentation

self.snippet.content = $sce.trustAsHtml('some html');