我在 AngularJS autolink
中创建了 2 个过滤器和 nl2br
.
autolink
: 将 URL 字符串转换为 <a>
带有属性的标签 rel="nofollow" target="_blank"
.我尝试将 ngSanitize 与 linky 过滤器一起使用,但它没有向其中添加上面的 2 个属性,也没有提供使用现有 API 的方法。
nl2br
: 将新行转换为 <br>
标签。
我想将这 2 个过滤器应用于 {{ comment }}
使用 {{ comment | autolink | nl2br }}
在我的 HTML 中,但过滤器是在 AngularJS 进行 HTML 转义之前应用的,这会导致 <a>
和 <br>
也被逃脱。基本上,我想应用过滤器 之后 逃跑发生了。
有没有办法用 AngularJS 做到这一点?
最佳答案
如果您的 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
中将其声明为依赖项。称呼。
关于filter - 对 AngularJS 的输出 HTML 应用过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988598/