Angular ng-model显示输入中的转义html实体

时间:2015-12-01 17:17:35

标签: angularjs filter html-entities angular-ngmodel ng-bind-html

这是我的控制器,我添加了一个变量“title”,其值为“This& That”。

app.controller('Controller', ['$scope', function($scope){

   $scope.title = "This & That";

}]);

我的输入绑定到“标题”,如下所示。

<input type="text" ng-model="title" />

最终输出显示如下

“这&amp;那个”而不只是“This&amp; That”。

但是,如果我添加这样的过滤器

<input type="text" ng-model="title | htmlentities_decode" />

我得到“This&amp; That”,但后来我再也无法编辑输入了。

过滤器就是这个

app.filter('htmlentities_decode', function(){

    return function(input){

        return $('<textarea />').html(input).text();
    };
});

如何获取“This&amp; That”而不是“This &amp; That”并仍然能够编辑输入。或者更好的是,如何在没有过滤器的情况下将标题绑定到ng-model并且没有将&符号编码为&amp;

提前致谢。

2 个答案:

答案 0 :(得分:0)

您应该使用$sce。你的代码就像

app.filter('htmlentities_decode', function($sce){

    return function(input){
        if(input)
           return $sce.trustAsHtml(input)
    };
});

答案 1 :(得分:0)

尝试ng-bind-html而不是ng-model。