但在我们的项目当中会遇到这样的情况,后台返回的数据中带有各种各样的html标签。如:
bugList.name=<font color="red">aaaa</font>12
这段话放在html中是会被转义的。也就是说会当成字符串输出来,不会被解析,这里是做一个高亮显示。需要变为红色
我们必须要使用$sce这个服务来解决我们的问题。所谓sce即“Strict Contextual Escaping”的缩写。
后台返回来json的html标签内容在angularjs来说,是不安全的,需要我们用$ sce.trustAsHtml() 标记为安全
for(var i=0;i<$scope.list.length;i++){//对每个name标记为htmlsave var bugList=$scope.list[i]; bugList.name= $sce.trustAsHtml(bugList.name); }然后在页面可以使用这种:
<a style="color:#0033FF" href="#" data-ng-bind-html="bugList.name"> </a>
注意没标记的属性data-ng-bind-html 是获取不到值的
要方便的话,可以使用过滤器,在后面加 | to_trusted 就可以了,用ng-bind-html
'use strict';
/* 过滤器 */
angular.module("myApp.bugFilter",[])
//输出html文本的过滤器
.filter('to_trusted', ['$sce', function ($sce) {
return function (text) {
return $sce.trustAsHtml(text);
}
}]
)