2013-02-20 67 views
9

我在AngularJS autolinknl2br中创建了2个过滤器。在输出的HTML上为AngularJS应用过滤器

autolink转换URL字符串到<a>标签与属性rel="nofollow" target="_blank"。我尝试使用ngSanitize和linky过滤器,但它并没有将上面的两个属性添加到它,也没有提供一种方法来使用exise API。

nl2br将新行转换为<br>标签。

我想这两个过滤器适用于使用在我的HTML {{ comment | autolink | nl2br }}{{ comment }},但AngularJS做的HTML转,这导致<a><br>被以及逃脱之前应用过滤器。基本上,我想在之后应用过滤器发生了转义。

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

回答

13

如果你在你的HTML标准的插值,角会逃避它:

<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调用中的依赖项。

+1

但是我想对我来说,评论,逃避;在逃跑后应用2个过滤器。 – ademers 2013-02-20 20:30:55

+0

啊,然后用'ng-bind-html'代替'ng-bing-html-unsafe'。我已经添加了答案。 – satchmorun 2013-02-20 21:11:45

+1

我的确如我在原帖中所述的那样做。但是我希望所有的东西都能逃脱,那就应用我的滤镜。 'ng-bind-html'会安全地转义一些HTML,并且会留下一些基本的html标签。同样,使用'ng-bind-html',它将删除我用''autolink'过滤器定义的'href'属性。 – ademers 2013-02-20 21:20:47