从响应中解码 html 标签并将其显示在视图中

decoding the html tag from response and showing it in view

我下面给出的响应是编码格式,我正在使用过滤器解码它并在我的 html 中显示值。但我需要在我看来将它们显示为 html 。所以使用了trustAsHtml。但这里的问题是当我使用 trustAsHtml 时,我的解码没有 occur.it 显示异常意外标记。

 $scope.res=  "data": [
                {
                  "jd": "<p>this jd1</p>"
                },
                {
                  "jd": "<li>this jd2</li>"
                },
                {
                  "jd": "<ul>this jd3</ul>"
                },
                {
                  "jd": "<p>this jd4</p>"
                }
              ]
            }   

JS:

$scope.trustAsHtml = $sce.trustAsHtml;

过滤器:

 app.filter('decodeFilter', function() {
    return function(input) {
        return decodeURIComponent(unescape(input));
    };
});

Html:

     <div ng-repeat="item in res">
        <div ng-bind-html ="trustAsHtml(item.jd | decodeFilter)">
</div>

您是否试过像这样在 app.config 中使用 $sceProvider 启用它?

angular
.module('myapp')
.config(["$locationProvider", "$sceProvider",function config($locationProvider, $sceProvider) {
        $sceProvider.enabled(true);
        $locationProvider.html5Mode(true);
});

您的 ng-repeat 对象资源似乎有问题,您应该根据您的代码使用 res.data。我也对您的自定义过滤器进行了一些更正。您还可以检查 this plunker 以获取给定的工作示例。

模板:

<div ng-repeat="item in res.data">
  <div ng-bind-html ="item.jd | decodeFilter"></div>
</div>

控制器:

app.controller('MainCtrl', function($scope) {
  $scope.res = {
    "data": [ {
        "jd": "<p>this jd1</p>"
      }, {
        "jd": "<li>this jd2</li>"
      }, {
        "jd": "<ul>this jd3</ul>"
      }, {
        "jd": "<p>this jd4</p>"
      }]
  };
});
app.filter('decodeFilter', function($sce) {
    return function(input) {
        return $sce.trustAsHtml(decodeURIComponent(input));
    };
});

注意: unescape() 函数在 JavaScript 1.5 版中已弃用。请改用 decodeURI() 或 decodeURIComponent()。 这意味着 unescape 等于 decodeURLComponent.