angular:创建没有html转义的格式化过滤器

时间:2013-11-11 10:41:45

标签: javascript angularjs html-escape

我想为某些字符串执行自动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-Tags?

(为了完美,为了安全起见,content.text本身应该被转义,但是没有添加下标标签。我使用角度1.2)

1 个答案:

答案 0 :(得分:0)

I think this article should help.  您可以通过两种方式呈现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'));
      };