你好,考虑我从我的HTML从我的服务器得到以下代码:
"e;<b>Demo</b>"e; &Hase>
我怎么把它渲染成
"演示"而demo将是"胖",有一个方法在AngularJS?实际上,让demo变成加粗对$sce
和ng-bind-html
来说没有问题,但其他东西仍然是"e;或者,
HTML来自elasticsearch的escape: 'html'
高亮功能,所以实际上我们没有将数据转义到elasticsearch中,而是让elasticsearch来做。
这实际上使它工作:
function unescapeHtml(safe) {
return safe.replace(/&/g, '&') // this needs to be /& ?!
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/'/g, "'");
}
不知道为什么强硬…太蠢了,也许有人能开导我一下。也许是charset问题?
您可以通过创建自定义过滤器和不转义html
来实现您想要的效果。 angular.module('app', [])
.filter('unescape', function($sce) {
function unescapeHtml(safe) {
return safe.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, "'");
}
return function(input) {
var unescaped = unescapeHtml(input);
return $sce.trustAsHtml(unescaped);
};
});
这样使用
{{ $ctrl.content | unescape }}