AngularJs:如何在HTML中解码HTML实体?

11 浏览
0 Comments

AngularJs:如何在HTML中解码HTML实体?

情况:
我正在建立一个网页,其中的内容是通过调用一个返回json格式数据的API来获取的。
问题是HTML标签以HTML实体的形式给出,需要解码。
示例:
这是我处理的json的示例:

<p align="justify"><strong>15<sup>th</sup> HERE THERE IS A BOLD TEXT </strong> HERE SOME NORMAL TEXT...


尝试:
我花了时间进行研究,发现这比我想象的要困难。在谷歌和类似的SO问题中查找,一个可能的解决方案是使用ng-bind-html。
API调用:

$http.get('http://API/page_content').then(function(resp) 
{
    $scope.content_test = resp.data[0].content; 
}


过滤器:

.filter('trusted', ['$sce', function($sce){
    return function(text) {
        return $sce.trustAsHtml(text);
    };
}])


在Angular视图中使用ng-bind-html:



输出:
这是在视图中的输出(与您看到的完全一样):

15th<\/sup> HERE THERE IS A BOLD TEXT<\/strong> HERE SOME NORMAL TEXT...


但我想看到的是文本被适当格式化的结果:
HERE THERE IS A BOLD TEXT HERE SOME NORMAL TEXT...
问题:
如何在AngularJs中解码HTML实体并将其显示为适当格式的HTML?

0
0 Comments

问题的出现原因:需要在AngularJs中对HTML实体进行解码,以便正确显示在页面上。

解决方法:添加angular.sanitize.js文件,并将其作为依赖注入到应用程序中。然后使用ng-bind-html指令将解码后的HTML字符串传递给页面中的元素。

以下是解决方法的代码示例:

// 添加angular.sanitize.js文件

// 添加依赖注入
var app = angular.module('plunker', ['ngSanitize']);
// 解码HTML字符串并传递给ng-bind-html
$http.get('http://API/page_content').then(function(resp) {
    var html = resp.data[0].content; 
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    $scope.content_test = txt.value;
    // 如果使用jQuery,可以使用以下代码
    //$scope.content_test = $('