使用AngularJS我正在发出GET请求以接收JSON文档。从这个JSON文档中,经过一些遍历后,我找到了一系列额外的JSON文档。通过对该数组中的每个对象进行更多JSON遍历,生成的内部JSON文档是原始HTML。
我试图在页面中显示每个原始HTML,但是,我只能将它们作为原始文本等效物显示为纯文本,而不是实际用HTML呈现。
在我的控制器中使用$ sce,我可以正确地将数组的一个特定元素上的一个特定路径呈现为HTML,但不是全部。
这是我的代码:
// controller:
$scope.latestEmails = function() {
$http.get('/emails/last/'+$scope.numberOfEmails).success(function(response) {
$scope.insertHtmlHere = $sce.trustAsHtml(response.body[0].body[0].content);
$scope.latestEmails = response.body;
});
}
// HTML
<div ng-bind-html="insertHtmlHere"></div> <!-- works for that one given element -->
<ul>
<li ng-repeat="email in latestEmails">{{email.body[0].content}} <!-- raw text displayed --></li>
</ul>
ng-bind-html正确替换了我的数组HTML中的第一个对象。 ng-repeat部分只是将HTML文本块(未呈现为HTML)放在列表中(屏幕截图:http://i.imgur.com/swmZ4Xe.png)。
有没有办法将我的ng-repeat中收到的HTML文本呈现为完整的HTML?我可以使用不同的AngularJS方法来实现这一目标吗?
非常感谢任何帮助或建议!
答案 0 :(得分:0)
经过大量的循环和连接技巧后,我找到了答案。基本上我遍历HTML文档数组,将每个文档连接在一起并显示连接的HTML。
这是我的解决方案代码:
// Controller:
$http.get('/emails/last/'+$scope.numberOfEmails).success(function(response) {
console.log('made a latestEmails get request');
console.log(response);
// get HTML of each email and concatenate together
var concat;
for(var i=0; i<response.body.length; i++) {
var email = response.body[i].body[0].content;
concat+=email;
}
// display the concatenated emails as pure HTML
$scope.insertHtmlHere = $sce.trustAsHtml(concat);
});
// HTML
<div ng-bind-html="insertHtmlHere"></div>
希望能帮助遇到此问题的其他人。