如何使用angularJs从json值渲染HTML标记

Sha*_*sha 11 html json angularjs

// json是这样的

"_unparsedString": "<p>test<\/p>"
Run Code Online (Sandbox Code Playgroud)

// HTML

<div>Preamble : '{{item2._unparsedString}}'</div>
Run Code Online (Sandbox Code Playgroud)

//输出

Preamble : <p>test<\/p>
Run Code Online (Sandbox Code Playgroud)

但如何渲染该标签并使用角度显示它?

//输出应该是这样的

 Preamble : test
Run Code Online (Sandbox Code Playgroud)

Reb*_*nix 20

您应该使用sce.trustAsHtml预处理html ,而不是直接传递字符串.

$scope.bindHTML = $sce.trustAsHtml(item2._unparsedString);
Run Code Online (Sandbox Code Playgroud)

然后在您的视图模板中,使用ng-bind-html来处理html绑定.

<div>Preamble : <div ng-bind-html="bindHTML"></div></div>
Run Code Online (Sandbox Code Playgroud)

正如你所提到的那样,你有一个对象数组,在控制器中强制转换它们并不容易,你可以在你的视图中绑定$sce你的$scope那个调用trustAsHtml

所以在你的控制器中

myapp.controller('mainController', function ($scope, $http, $filter, $sce) {
   $scope.$sce = $sce;
...
}
Run Code Online (Sandbox Code Playgroud)

然后在你的HTML视图中

<div>Preamble {{$index+1}} : <span ng-bind-html="$sce.trustAsHtml(item1.Preamble._unparsedString)"></span></div>
Run Code Online (Sandbox Code Playgroud)

  • @Flash见https://jsfiddle.net/1joo0j77/5/运行项目,在第二个选择框中选择"市场".你可以看到结果. (2认同)

Use*_*er2 5

请查看此工作示例:http://jsfiddle.net/Shital_D/b9qtj56p/6/

下载文件 - angular-sanitize.js并将其包含在您的应用中.

var app = angular.module('myApp', ["ngSanitize"]);       

app.controller('myController', function($scope,$compile) {
    $scope.html = '<p>Your html code</p>';
});

<div ng-app="myApp">
     <div ng-controller="myController">
     <p ng-bind-html="html"></p>
</div>
Run Code Online (Sandbox Code Playgroud)