Angular $ sce服务似乎是编码字符而不信任html。是否可以选择让html受信任?
$scope.text = $sce.trustAsHtml('it's broken')
一个例子。
<p>it's working</p>
<p>{{ text }}</p>
看起来像。
it's working
it's broken
我宁愿不使用ng-bind-html
,因为它意味着在以下过滤器中使用。
{{ text | render }}
答案 0 :(得分:0)
对你的html进行编码不是$sce
,实际上什么也没有。
但是当你使用插值{{ text }}
时,angular会检测到并通过textNode.nodeValue
将其替换为正确的值,而不是innerHTML
。因此,您的'
将被视为普通文本,而不是编码的HTML实体。
这就是ng-bind-html
存在的原因,没有什么可以阻止您在ng-bind-html
表达式中使用过滤器。
<div ng-bind-html="text | render | trustAsHtml"></div>
示例过滤器:
.filter('render', function () {
return function (value) {
return value + '!';
};
})
.filter('trustAsHtml', function ($sce) {
return function (value) {
return $sce.trustAsHtml(value);
};
})
示例Plunker: http://plnkr.co/edit/F8OQvoSzOR06TPepc2Fo?p=preview