2012-07-10 40 views
17

我正在使用AngularJS和第三方服务来生成html响应。我想使用ng-repeat将HTML响应呈现为列表,但Angular会将其呈现为文本。AngularJS - 是否可以使用ng-repeat呈现HTML值?

是否可以使用ng-repeat呈现HTML属性?

我创建了这个jsFiddle来展示我的问题。 http://jsfiddle.net/DrtNc/1/

+1

对于您现在查看此问题的用户,请查看[ngBindHtml](http://docs.angularjs.org/api/ng.directive:ngBindHtml)文档的顶级评论。这对我来说很有效,而这些答案没有。 – 2013-11-20 22:37:12

回答

19

我认为使用ng-bind-html-unsafe会给你你所需要的。

<div ng:repeat="item in items" ng-bind-html-unsafe="item.html"></div> 

这里有一个工作提琴:http://jsfiddle.net/nfreitas/aHfAp/的指令

文档可以在这里找到:http://docs.angularjs.org/api/ng.directive:ngBindHtmlUnsafe

+0

优秀的标签,那是it – 2012-07-11 08:24:32

+1

如果我想要在item.html中使用自定义指令,该怎么办? – test30 2014-08-07 11:26:25

+4

这是几年前的事了 - 只是想告诉新的流量,这个方法已经被弃用了,下面是一个很好的方法:http ://sackoverflow.com/questions/19415394/with-ng-bind-html-unsafe-removed-how-do-i-inject-html – 2015-05-25 21:50:53

2

item.html将始终被解释为文本。你必须明确地将其转换为html。 click here

我已经添加了一个渲染函数,它将每个字符串转换为html。

+0

超酷!感谢您的帮助 – 2012-07-10 08:17:26

+0

欢迎:) – Kishore 2012-07-10 08:17:58

+3

嗯......我认为现在庆祝还为时过早。你的解决方案呈现innerHTML,我真正需要的是呈现整个HTML。 看到我的更新:http://jsfiddle.net/DrtNc/4/ – 2012-07-10 09:59:50

16

我实现这一点的方法是NG-收口HTML的NG-重复内;

<div ng-repeat="comment in comments"> 
    <div ng-bind-html="comment.content"></div> 
</div> 

希望这可以帮助别人!

+0

不要忘记使用$ sce对于你要注入的HTML元素。请参阅:http://stackoverflow.com/questions/19415394/with-ng-bind-html-unsafe-removed-how-do-i-inject-html – suhendri 2016-09-27 06:40:14

+0

这不适合我 – Xsmael 2017-10-03 10:46:41