9

AngularJSautolinkとで 2 つのフィルターを作成しましnl2brた。

autolink:<a> URL 文字列を属性を持つタグに変換しますrel="nofollow" target="_blank"。linky フィルターで ngSanitize を使用してみましたが、上記の 2 つの属性が追加されず、既存の API でそれを行う方法も提供されません。

nl2br:<br>改行をタグに変換します。

{{ comment }}これら 2 つのフィルターを HTML で使用するために適用したいのです{{ comment | autolink | nl2br }}が、AngularJS が HTML エスケープを実行する前にフィルターが適用され、結果として<a>and<br>もエスケープされます。基本的に、エスケープが行われたにフィルターを適用したいと思います。

AngularJS でこれを行う方法はありますか?

4

1 に答える 1

13

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 を生成しますが、最初にサニタイズします ( $sanitizedocs )。

ng-bind-htmlモジュール内ngSanitizeに存在するため、呼び出しで依存関係として宣言したことを確認する必要がありますangular.module

于 2013-02-20T20:28:36.643 に答える