2012-07-10 8 views
17

Estoy usando AngularJS con un servicio externo que genera respuestas html. Quiero usar ng-repeat para representar las respuestas HTML como una lista, sin embargo, Angular lo representa como texto.AngularJS - ¿Es posible usar ng-repeat para representar valores HTML?

¿Es posible usar ng-repeat para representar la propiedad HTML?

He creado este jsFiddle para demostrar mi problema. http://jsfiddle.net/DrtNc/1/

+1

Para aquellos de ustedes que están viendo esta pregunta ahora, echen un vistazo al comentario principal en los documentos para [ngBindHtml] (http://docs.angularjs.org/api/ng.directive:ngBindHtml). Eso funcionó para mí mientras que estas respuestas no. –

Respuesta

19

Creo que el uso de ng-bind-html-unsafe le proporcionará lo que necesita.

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

Aquí es un violín de trabajo: http://jsfiddle.net/nfreitas/aHfAp/

Documentación para la directiva se puede encontrar aquí: http://docs.angularjs.org/api/ng.directive:ngBindHtmlUnsafe

+0

excelente, eso es es –

+1

¿qué sucede si quisiera tener directivas personalizadas en item.html? – test30

+4

Hace un par de años, solo quería informarle al nuevo tráfico que este método ha sido desaprobado. He aquí una buena manera de hacerlo: http : //stackoverflow.com/questions/19415394/with-ng-bind-html-unsafe-removed-how-do-i-inject-html –

2

item.html siempre se interpretarán como texto. tienes que convertirlo a html explícitamente. click here

He agregado una función de renderizado que convertirá cada cadena en html.

+0

Super cool! gracias por la ayuda –

+0

eres bienvenido :) – Kishore

+3

mmm ... Creo que era demasiado temprano para celebrar. su solución representa el innerHTML, lo que realmente necesito es renderizar todo el HTML. ver mi actualización: http: //jsfiddle.net/DrtNc/4/ –

16

La forma en que he logrado esto es por NG-bind-html dentro del ng-repeat;

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

Espero que esto ayude a alguien!

+0

No se olvide de usar $ sce para el elemento html que desea inyectar. Consulte: http://stackoverflow.com/questions/19415394/with-ng-bind-html-unsafe-removed-how-do-i-inject-html – suhendri

+0

esto no funciona para mí – Xsmael

Cuestiones relacionadas