2012-07-10 3 views
17

Uso AngularJS con un servizio di terze parti che genera risposte html. Voglio usare ng-repeat per rendere le risposte HTML come un elenco, tuttavia Angular lo rende come testo.AngularJS - È possibile utilizzare ng-repeat per visualizzare i valori HTML?

È possibile utilizzare ng-repeat per visualizzare la proprietà HTML?

Ho creato questo jsFiddle per dimostrare il mio problema. http://jsfiddle.net/DrtNc/1/

+1

Per quelli di voi che stanno visualizzando questa domanda ora, consultate il commento più in alto sui documenti per [ngBindHtml] (http://docs.angularjs.org/api/ng.directive:ngBindHtml). Questo ha funzionato per me mentre queste risposte no. –

risposta

19

Penso che utilizzando ng-bind-html-unsafe otterrete ciò che vi serve.

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

Ecco un violino di lavoro: http://jsfiddle.net/nfreitas/aHfAp/

documentazione per la direttiva può essere trovato qui: http://docs.angularjs.org/api/ng.directive:ngBindHtmlUnsafe

+0

eccellente, cioè it –

+1

e se volessi avere direttive personalizzate in item.html? – test30

+4

Questo è un paio di anni - volevo solo informare il nuovo traffico che questo metodo è stato deprecato. Ecco un buon modo per farlo: http : //stackoverflow.com/questions/19415394/with-ng-bind-html-unsafe-removed-how-do-i-inject-html –

2

item.html sarà sempre interpretato come testo. devi convertirlo in html esplicitamente. click here

Ho aggiunto una funzione di rendering che convertirà ogni stringa in html.

+0

Super cool! grazie per l'aiuto –

+0

siete i benvenuti :) – Kishore

+3

mmm ... Penso che fosse troppo presto per festeggiare. la tua soluzione rende il innerHTML, ciò di cui ho veramente bisogno è di rendere l'intero HTML. vedere il mio aggiornamento: http: //jsfiddle.net/DrtNc/4/ –

16

Il modo in cui ho raggiunto questo è di NG-bind-html all'interno del ng-repeat;

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

Spero che questo aiuti qualcuno!

+0

Non dimenticare di usare $ sce per l'elemento html che vuoi iniettare. Vedi: http://stackoverflow.com/questions/19415394/with-ng-bind-html-unsafe-removed-how-do-i-inject-html – suhendri

+0

questo non funziona per me – Xsmael