0

一部の文字列に対して自動 html フォーマットを実行したいと考えています。たとえば、下線が前に付いている char の自動添え字を実行したいとします。
したがって、「U_1 + U_2 = U_3」のような文字列は、U 1 + U 2 = U 3にフォーマットする必要があります。

これは、フィルターにとって完璧な仕事のように見えます。私は次のことを試しました:

angular.module('myApp.filters', []).
  filter('convert_subscripts', [ function(){
      return function(text){
          return text.replace(/_([\w]+)/, '<sub>$1</sub>', 'g');
      };
   }])

そして私の見解では:

<p>{{content.text | convert_subscripts }}</p>

しかし、これは HTML をエスケープするため、適切にフォーマットされた添え字の代わりに「sub」タグが表示されます。

html タグがエスケープされないようにフォーマット機能を実装するにはどうすればよいですか?

(完璧を期すためには、セキュリティのために content.text 自体をエスケープする必要がありますが、追加された添え字タグはエスケープしないでください。私は angular 1.2 を使用しています)

4

1 に答える 1

0

この記事が役立つと思います。 2つの方法でhtmlをそのままレンダリングできます

$sce.trustAsHtml('text')

または、この目的のために次のようなフィルターを作成できます

app.filter('filterName',function($sce){
    return function(text){
             $sce.trustAsHtml(text);
           }
    });

あなたの場合、アプローチ1を使用する必要があります

function($sce){
      return function(text){
          return $sce.trustAsHtml(text.replace(/_([\w]+)/, '<sub>$1</sub>', 'g'));
      };
于 2015-03-25T20:28:17.100 に答える