angularjs显示html文本

2016年3月29日 · 48 字 · 1 分钟

Angularjs中输出变量使用花括号或者ng-bind,但是如果变量中有html代码的话,angularjs为了xss安全,默认是不解析html,直接原样显示html代码。
如果需要显示解析后的html代码,需要使用angular-sanitize模块。

angular-sanitize一般会附带在angularjs中,如果没有附带,请前往官网下载对应版本的angular-sanitize模块。

模块代码

var demo = angular.module('demo',['ng-sanitize']);

控制器代码

demo.controller('Demo13Controller', [
  '$scope', function($scope) {
    $scope.html = '<span style="color: red">这是格式化的HTML文本</span>';
  }
]);

视图代码

<article class="demo13" ng-controller="Demo13Controller">
<h2><a name="demo13">13.显示HTML文本</a></h2>
<div class="demo13-content">
<p>需要显示的文本:</p>
<p>Html格式化文本: <span ng-bind-html="html|htmlContent"></span></p>
</div>
</article>

过滤器代码

demo.filter('htmlContent',['$sce', function($sce) {
  return function(input) {
    return $sce.trustAsHtml(input);
  }
}]);

总结

$sce过滤器+ng-bind-html就可以显示html文本了。