2012-07-10 9 views
17

Ich verwende AngularJS mit einem Drittanbieter-Dienst, der HTML-Antworten generiert. Ich möchte ng-repeat verwenden, um die HTML-Antworten als Liste darzustellen, aber Angular rendert es als Text.AngularJS - Ist es möglich, ng-repeat zum Rendern von HTML-Werten zu verwenden?

Ist es möglich, mit ng-repeat HTML-Eigenschaften zu rendern?

Ich habe dieses jsFiddle erstellt, um mein Problem zu demonstrieren. http://jsfiddle.net/DrtNc/1/

+1

Für diejenigen von Ihnen, die diese Frage jetzt sehen, sehen Sie sich den Top-Kommentar zu den Dokumenten für [ngBindHtml] an (http://docs.angularjs.org/api/ng.directive:ngBindHtml). Das hat für mich funktioniert, während diese Antworten nicht waren. –

Antwort

19

Ich denke, mit ng-bind-html-unsafe bekommen Sie, was Sie brauchen.

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

Hier ist eine Arbeits Geige: http://jsfiddle.net/nfreitas/aHfAp/

Dokumentation für die Richtlinie finden Sie hier: http://docs.angularjs.org/api/ng.directive:ngBindHtmlUnsafe

+0

ausgezeichnet haben, das ist it –

+1

Was wäre, wenn ich benutzerdefinierte Anweisungen in item.html haben möchte? – test30

+4

Dies ist ein paar Jahre alt - wollte nur neue Verkehr, dass diese Methode veraltet wurde informiert werden.Hier ist ein guter Weg, es zu tun: http : //stackoverflow.com/questions/19415394/with-ng-bind-html-unsafe-removed-how-do-i-inject-html –

2

item.html wird immer als Text interpretiert. Sie müssen es explizit in HTML konvertieren. click here

Ich habe eine Renderfunktion hinzugefügt, die jede Zeichenfolge in HTML konvertiert.

+0

Super cool! Danke für die Hilfe –

+0

Sie sind herzlich willkommen :) – Kishore

+3

mmm ... Ich denke, es war zu früh zum Feiern. Ihre Lösung rendert das innerHTML, was ich wirklich brauche, ist das Rendern des gesamten HTML. siehe mein Update: http: //jsfiddle.net/DrtNc/4/ –

16

So wie ich dies erreicht ist ng-bind-html innerhalb des ng-repeat;

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

Hoffe, das hilft jemandem!

+0

Vergessen Sie nicht, $ sce zu verwenden Für das HTML-Element, das Sie injizieren möchten: http://stackoverflow.com/questions/19415394/with-ng-bind-html-unsafe-removed-how-do-i-inject-html – suhendri

+0

das funktioniert nicht für mich – Xsmael

Verwandte Themen