javascript - span - Cómo tener salida AngularJS escapó HTML
title html (2)
Esta pregunta ya tiene una respuesta aquí:
- AngularJS: Insertar HTML de una cadena 2 respuestas
Estoy recibiendo datos JSON del servidor, uno de los campos contiene html escapado (un cuerpo de correo electrónico en realidad):
<html>/r/n<head>/r/n<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">/r/n</head>/r/n<body dir="auto">/r/n<div>Buonasera, ho verificato i dati sul mio account ed il numero di cell che vi ho fornito</div>/r/n<div><br>/r/n<a
<html>/r/n<head>/r/n<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">/r/n</head>/r/n<body dir="auto">/r/n<div>Buonasera, ho verificato i dati sul mio account ed il numero di cell che vi ho fornito</div>/r/n<div><br>/r/n<a
(más ...)
Me estoy volviendo loco al intentar renderizarlo con AngularJs.
Lo siguiente no está funcionando:
<div ng-bind-html-unsafe="mail.htmlbody"></div>
Lo cual creo que es normal porque el html en realidad se escapó. ¿Debo desenmascararlo primero? ¿Angular es capaz de liberar html con algún servicio disponible?
Si utilizo $ sce así:
scope.mail.htmlbody = $sce.trustAsHtml(scope.mail.htmlbody);
Se muestra el html de origen, inspeccionando el elemento, puedo ver que se cita el contenido. En otras palabras, en la página se muestra el html fuente en lugar del html que se está procesando. Tal vez me estoy perdiendo algo?
Al mismo tiempo que se introdujo el servicio $sce
(angular 1.2), se eliminó el soporte para la directiva ng-bind-html-unsafe
. La nueva directiva es ng-bind-html
. Si usa esto, el código debería funcionar como está documentado :
<div ng-bind-html="mail.htmlbody"></div>
Usa esta directriz:
<div ng-bind-html="mail.htmlbody"></div>
No olvides usar sanitización angular en tu módulo de aplicación.
mira aquí: http://docs.angularjs.org/api/ngSanitize