2013-02-20 65 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