我在AngularJS autolink
和nl2br
中创建了2个过滤器。
autolink
:将网址字符串转换为<a>
标记,其属性为rel="nofollow" target="_blank"
。我尝试将ngSanitize与linky过滤器一起使用,但它没有将上面的2个属性添加到它,也没有提供使用exising API的方法。
nl2br
:将新行转换为<br>
代码。
我想在我的HTML中使用{{ comment }}
将这两个过滤器应用于{{ comment | autolink | nl2br }}
,但是在AngularJS执行HTML转义之前应用过滤器会导致<a>
和{{1也被转义了。基本上,我想在转发之后应用过滤器。
有没有办法用AngularJS做到这一点?
答案 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
电话中将其声明为依赖项。