在AngularJS的输出HTML上应用过滤器

时间:2013-02-20 19:45:07

标签: filter escaping angularjs

我在AngularJS autolinknl2br中创建了2个过滤器。

autolink :将网址字符串转换为<a>标记,其属性为rel="nofollow" target="_blank"。我尝试将ngSanitize与linky过滤器一起使用,但它没有将上面的2个属性添加到它,也没有提供使用exising API的方法。

nl2br :将新行转换为<br>代码。

我想在我的HTML中使用{{ comment }}将这两个过滤器应用于{{ comment | autolink | nl2br }},但是在AngularJS执行HTML转义之前应用过滤器会导致<a>和{{1也被转义了。基本上,我想在转发之后应用过滤器

有没有办法用AngularJS做到这一点?

1 个答案:

答案 0 :(得分:13)

如果您的HTML中有标准插值,Angular将逃避它:

<div> {{ var | filter1 | filter2 }} </div>

整个表达式的结果将被转义。

您想要的是ng-bind-html-unsafe (docs here)。您可以表达与上面基本相同的内容:

<div ng-bind-html-unsafe='var | filter1 | filter2'></div>

现在表达式的结果将不会被清理,并将作为div的内容插入。

编辑:请注意,还有ng-bind-html,它仍会生成HTML,但会先清理它($sanitize docs)。

ng-bind-html位于ngSanitize模块中,因此您必须确保在angular.module电话中将其声明为依赖项。