我有点卡住了,我从一个带有角度、JSON 的端点获取数据,有时这些数据可能是 HTML 代码,我读到了它,我发现如果我想将该信息解析为 HTML,没有""
,我必须使用JSON.parse()
。
问题是现在代码被转义并在我的模板中调用它之前引发错误。http://screencast.com/t/zledZ6rBod
我可以看到为什么会发生这种情况,但是如何在我的模板中输出可解释的 HTML 标记?
我有点卡住了,我从一个带有角度、JSON 的端点获取数据,有时这些数据可能是 HTML 代码,我读到了它,我发现如果我想将该信息解析为 HTML,没有""
,我必须使用JSON.parse()
。
问题是现在代码被转义并在我的模板中调用它之前引发错误。http://screencast.com/t/zledZ6rBod
我可以看到为什么会发生这种情况,但是如何在我的模板中输出可解释的 HTML 标记?
我认为有一种更简单的方法来“清理”一个 HTML 字符串。
angular-sanitize.min.js
您的 HTML。 var app = angular.module('myapp', ['ngSanitize']);
ng-bind-html="HTML_STRING_VAR_HERE"
这样你就不必创建一个函数来清理,你可以直接传递变量。
你可以在这个 plunker 中看到一个例子。http://plnkr.co/edit/4FBUSooNMpqk1rYAZYdZ
让我知道你的想法。
答案是使用 $sce,严格上下文转义,这里是文档: http : //docs.angularjs.org/api/ng/service/ $sce#methods_trustashtml
对我来说,它是这样工作的:
在控制器中:
$scope.theHtml = '<div class="red">Content</div>';
$scope.parseHtml = function() {
return $sce.trustAsHtml($scope.theHtml);
};
在模板中:
<div ng-bind-html="parseHtml()"></div>