【发布时间】:2015-03-21 07:14:21
【问题描述】:
我正在尝试使用以下多个过滤器,
<p><span ng-bind-html="someVar | nl2br | linky"></span></p>
什么都不渲染。 但是,当我如下更改过滤器的顺序时
<p><span ng-bind-html="someVar | linky | nl2br"></span></p>
linky 有效,但 nl2br 无法将换行符转换为 br。
nl2br 可以使用以下实现:
.filter('nl2br', function($sce) {
return function(input) {
return $sce.trustAsHtml( input.replace(/\n/g, '<br>') );
}
}
【问题讨论】:
-
nl2br 过滤器参考代码pastebin.com/1TsdF0V6
-
$sce.trustAsHtml不返回字符串,linky需要一个。 -
我提出这个问题是为了赏金,因为这是一个常见但出乎意料的复杂问题,它会教你一些你一开始不想知道的东西。我知道将用户输入的 HTML 视为不受信任的处理很重要,但是将 $sce 与简单的两个过滤器链一起使用的复杂性让我大吃一惊。