Après avoir lu l' étape 9 du didacticiel AngularJS, j'ai créé mon propre filtre AngularJS, qui devrait convertir les données booléennes en html.
Voici mon code de filtre:
angular.module('phonecatFilters', []).filter('iconify', function () { // My custom filter
return function (input) {
return input ? '<i class="icon-ok"></i>' : '<i class="icon-remove"></i>';
}
});
Voici mon code HTML:
<dt>Infrared</dt>
<dd>{{phone.connectivity.infrared | iconify }}"></dd>
Le problème est que borwser affiche littéralement la valeur renvoyée comme suit:
<i class="icon-ok"></i>
pas comme des icônes (ou rendu html) qui devraient apparaître.
Je pense qu'une certaine désinfection se produit pendant ce processus.
Est-il possible de désactiver cette désinfection pour ce filtre spécifique?
De plus, je sais comment afficher les icônes en ne renvoyant pas la sortie HTML du filtre, mais plutôt simplement en `` ok '' ou en `` supprimant '' du texte que je peux ensuite remplacer:
<i class="icon-{{phone.connectivity.infrared | iconify}}"><i>
mais ce n'est pas ce que je veux.
angular-sanitize.js
fichier pour que cela fonctionne. Si vous souhaitez faire de même sans inclure cette bibliothèque supplémentaire, vous pouvez utiliser lang-bind-html-unsafe
directive.ng-html-bind-unsafe
et nécessite que le contenu html soit explicitement marqué comme `` sûr '' - voir: docs.angularjs.org/api/ng.$sce#Example{{myContent | myFilter | html_safe}}
à moins que je ne le lise mal, vous vous approchez de la mauvaise manière
Je pense que ng-class est la directive dont vous avez besoin pour ce travail et est plus sûr que le rendu en attribut de classe.
dans votre cas, ajoutez simplement une chaîne d'objet avec les chaînes d'identifiant comme classe et la valeur comme expression évaluée
Par ailleurs, vous ne devez utiliser que des directives (intégrées et personnalisées) pour manipuler html / dom et si vous avez besoin d'un rendu html plus complexe, vous devriez plutôt regarder la directive
la source
<i ng-class="phone.connectivity.infrared ? 'icon-ok' : 'icon-remove'"></i>
Essayez ce filtre
nécessite une désinfection angulaire
Lien Gist
la source