web-dev-qa-db-fra.com

Comment avoir une sortie AngularJS échappée HTML

Je reçois des données JSON du serveur, l'un des champs contient du code HTML échappé (un corps de courrier électronique en fait):

<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 (plus...)

Je deviens fou d'essayer de le rendre avec AngularJs.

Ce qui suit ne fonctionne pas:

<div ng-bind-html-unsafe="mail.htmlbody"></div>

Ce qui, à mon avis, est normal car le code HTML est en fait échappé. Dois-je le décaper d'abord? Est-ce que Angular est capable de libérer du code HTML avec certains services disponibles?

Si j'utilise $ sce comme ceci:

scope.mail.htmlbody = $sce.trustAsHtml(scope.mail.htmlbody);

Le code source HTML est affiché, inspectant l'élément je peux voir que le contenu est cité. En d'autres termes, dans la page, le code source HTML est affiché à la place du code HTML en cours de rendu. Peut-être que je manque quelque chose?

38
Max Favilli

En même temps $sce _ service a été introduit (valeur angulaire 1.2), prise en charge de ng-bind-html-unsafe La directive a été supprimée. La nouvelle directive est ng-bind-html. Si vous utilisez ceci, le code devrait fonctionner comme documenté :

 <div ng-bind-html="mail.htmlbody"></div>
46
Davin Tryon

Utilisez cette directive:

<div ng-bind-html="mail.htmlbody"></div>

N'oubliez pas d'utiliser angular sanitize sur votre module d'application.

vérifier ici: http://docs.angularjs.org/api/ngSanitize

16
Md. Al-Amin