向作者致敬
问题提出
但在我们的项目当中会遇到这样的情况,后台返回的数据中带有各种各样的html标签
angularJs输出html的时候,浏览器并不解析这些html标签
我们用ng-bind-html这样的指令来绑定,浏览器中显示的还是html代码
解决方案
此时可以通过$sce服务把一些地址变成安全的、授权的链接…简单地说,就像告诉门卫,这个陌生人其实是我的好朋友,很值得信赖,不必拦截它!
解决方法1–过滤器
<body ng-app="myApp" ng-controller="myCtl">
<div ng-bind-html="htmlContent | to_trusted">
</div>
</body>
</html>
<script>
var app = angular.module('myApp', []);
app.controller('myCtl',['$scope', function($scope){
$scope.htmlContent = '<h1 style="color: orange">wednesday</h1>';
}]);
app.filter('to_trusted', ['$sce', function ($sce) {
return function (text) {
return $sce.trustAsHtml(text);
};
}]);
</script>
解决方法2
<body ng-app="myApp" ng-controller="myCtl">
<div ng-bind-html="content">
</div>
</body>
</html>
<script>
var app = angular.module('myApp', []);
app.controller('myCtl',['$scope','$sce', function($scope,$sce){
$scope.content = $sce.trustAsHtml( '<h1 style="color: orange">wednesday</h1>' );
}]);
</script>