Después de leer el paso 9 del tutorial de AngularJS , he creado mi propio filtro AngularJS, que debería convertir datos booleanos en html.
Aquí está mi código de filtro:
angular.module('phonecatFilters', []).filter('iconify', function () { // My custom filter
return function (input) {
return input ? '<i class="icon-ok"></i>' : '<i class="icon-remove"></i>';
}
});
Aquí está mi código HTML:
<dt>Infrared</dt>
<dd>{{phone.connectivity.infrared | iconify }}"></dd>
El problema es que borwser muestra el valor devuelto literalmente como:
<i class="icon-ok"></i>
no como iconos (o html renderizado) que deberían aparecer.
Aquí está el ejemplo de JSFiddle
Creo que se produce algo de desinfección durante este proceso.
¿Es posible desactivar esta desinfección para este filtro específico?
También sé cómo mostrar iconos al no devolver la salida HTML del filtro, sino simplemente 'aceptar' o 'eliminar' el texto que luego puedo sustituir por:
<i class="icon-{{phone.connectivity.infrared | iconify}}"><i>
pero esto no es lo que quiero.
angular-sanitize.js
archivo para que esto funcione. Si desea hacer lo mismo sin incluir esta biblioteca adicional, puede usar lang-bind-html-unsafe
directiva.ng-html-bind-unsafe
requiere que el contenido html se marque explícitamente como 'seguro'; consulte: docs.angularjs.org/api/ng.$sce#Example{{myContent | myFilter | html_safe}}
a menos que lo esté leyendo mal, te estás acercando por el camino equivocado
Creo que ng-class es la directiva que necesita para este trabajo y es más segura que la representación en el atributo de clase.
en su caso, simplemente agregue la cadena de objeto con las cadenas de identificación como la clase y el valor como la expresión evaluada
en una nota al margen, solo debe usar directivas (integradas y personalizadas) para manipular html / dom y si necesita un render html más complejo, debe mirar la directiva en su lugar
fuente
<i ng-class="phone.connectivity.infrared ? 'icon-ok' : 'icon-remove'"></i>
Prueba este filtro
requiere desinfección angular
Enlace Gist
fuente