2016-08-18 8 views
0

こんにちはエスケープ示し、 「脂肪」は、AngularJSに道があるのですか?実際にデモを太字にすることは、$sceng-bind-htmlでは問題ありませんが、その他のものはエスケープされていない相手の代わりに&quote;または&のままです。AngularJSは、私は私のサーバーからの私のHTMLから、次のコードを取得考慮HTML

HTMLはelasticsearchのハイライト機能から来ています。escape: 'html'となっています。実際には、データをelasticsearchにエスケープして、elasticsearchにそれをさせません。

これは実際には動作します:なぜ厳しい

function unescapeHtml(safe) { 
     return safe.replace(/&/g, '\&') // this needs to be /& ?! 
      .replace(/</g, '<') 
      .replace(/>/g, '>') 
      .replace(/"/g, '"') 
      .replace(/'/g, ''') 
      .replace(/'/g, "\'"); 
    } 

わからない...それは愚かだ、多分誰かが私を啓発することができます。多分charsetの問題?

+1

は、あなたが探しているものを本であることの使用することができます - $ sce.trustAsHtml(」 " デモ "「) - >これは 『デモ』をレンダリングするでしょう太字 – Developer

+0

で実際に、それはあなたが結合しているどのように"デモ"e; –

+0

をレンダリングしませんその値を表示するには?それを共有していただけますか? {$ ctrl.content}}またはで –

答えて

-1

カスタムフィルタおよびアンエスケープHTML

angular.module('app', []) 
    .filter('unescape', function($sce) { 

      function unescapeHtml(safe) { 
      return safe.replace(/&/g, '&') 
       .replace(/&lt;/g, '<') 
       .replace(/&gt;/g, '>') 
       .replace(/&quot;/g, '"') 
       .replace(/&#039;/g, "'"); 
      } 

      return function(input) { 
       var unescaped = unescapeHtml(input); 
       return $sce.trustAsHtml(unescaped); 
      }; 
    }); 

を作成することによって、あなたが望むものを達成し、このよう

{{ $ctrl.content | unescape }} 
+0

であり、これは意味がありません。残念ですが、XSSで問題が発生します。 –

関連する問題