我从API接收HTML实体字符串(例如"<p> Some text <br />"
),我希望它呈现为HTML。
如果我使用经典的HTML解决方案和sanitize:
.filter('html',function($sce){
return function(input){
return $sce.trustAsHtml(input);
}
});
我获取<p> Some text <br />
作为字符串,而不是<p>
和<br>
被解释为HTML。
我现在看到的唯一解决方案是实现一些替换并在之后应用过滤器。
是否有更清晰的解决方案可以避免解析字符串两次?
答案 0 :(得分:0)
不是使用替换,而是可以执行以下操作:
input = angular.element('<div/>').html(input).text();
return $sce.trustAsHtml(input);
答案 1 :(得分:0)
您可以创建一个解析html实体的过滤器,如下所示:
app.filter('trusted', ['$sce', function($sce) {
var div = document.createElement('div');
return function(text) {
div.innerHTML = text;
return $sce.trustAsHtml(div.textContent);
};
}]);
在此之前,或多或少是你所说的。 但是现在,你可以这样做:
<div ng-bind-html="'<p> Some text <br />' | trusted"></div>
OR
<div ng-bind-html="yourScopeVariable | trusted"</div>
它将呈现所需的HTML