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

ade*_*ers 9 escaping filter angularjs

我在AngularJS创建2个过滤器autolinknl2br.

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

nl2br:将新行转换为<br>标记.

我想在我的HTML中{{ comment }}使用这两个过滤器{{ comment | autolink | nl2br }},但是在AngularJS执行HTML转义之前应用过滤器,这也导致转义<a><br>转义.基本上,我想在转义发生应用过滤器.

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

sat*_*run 13

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

<div> {{ var | filter1 | filter2 }} </div>
Run Code Online (Sandbox Code Playgroud)

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

你想要的是ng-bind-html-unsafe (这里的文档).您可以表达与上面基本相同的内容:

<div ng-bind-html-unsafe='var | filter1 | filter2'></div>
Run Code Online (Sandbox Code Playgroud)

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

编辑:请注意,还有ng-bind-html,它仍将生成HTML,但将首先清理它($sanitize文档).

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