0

API から HTML エンティティ文字列 (このような) を受け取り、"<p> Some text <br />"それを HTML としてレンダリングしたいと考えています。

Sanitize で従来の HTML ソリューションを使用する場合:

.filter('html',function($sce){
  return function(input){
     return $sce.trustAsHtml(input);
  }
});

&lt;p&gt; Some text &lt;br /&gt;の代わりに文字列として取得し<p>、HTML<br>として解釈されます。

私が今見ている唯一の解決策は、いくつかの置き換えを実現し、後でフィルターを適用することです。

文字列を 2 回解析することを回避する、よりクリーンなソリューションはありますか?

4

2 に答える 2

0

次のように、html エンティティを解析するフィルターを作成できます。

app.filter('trusted', ['$sce', function($sce) {
 var div = document.createElement('div');
 return function(text) {
     div.innerHTML = text;
     return $sce.trustAsHtml(div.textContent);
 };
}]);

これまでは、多かれ少なかれあなたが言ったことです。しかし今、あなたはできる:

<div ng-bind-html="'&lt;p&gt; Some text &lt;br /&gt;' | trusted"></div>

また

<div ng-bind-html="yourScopeVariable | trusted"</div>

そして、それは目的のHTMLをレンダリングします

于 2016-12-19T17:40:00.317 に答える