Injecter des fragments HTML dans des vues à partir de contrôleurs AngularJS
AngularJS propose différentes manières de modifier dynamiquement la vue en fonction de la logique du contrôleur. Dans certains scénarios, il est nécessaire de générer dynamiquement des fragments HTML au sein du contrôleur et de les afficher dans la vue. Pour y parvenir, il est nécessaire de considérer comment AngularJS interprète le contenu injecté.
Comprendre le rendu HTML AngularJS
Lors de la définition d'une propriété de modèle sur un fragment HTML, AngularJS s'échappe automatiquement les entités HTML pour des raisons de sécurité. Cependant, si l'intention est d'afficher le HTML sous forme de contenu réel, cet échappement présente un défi. Le HTML résultant est rendu sous forme de chaîne entre guillemets, empêchant son exécution.
Solutions pour le rendu de fragments HTML dynamiques
Pour surmonter cette limitation, AngularJS propose les solutions suivantes :
ng:bind-html (Angulaire 1.x)
Utilisez la directive ng:bind-html dans le HTML pour restituer le contenu HTML souhaité. Cependant, cette approche soulève des vulnérabilités de sécurité potentielles et nécessite l'utilisation de $sce ou ngSanitize.
$sce
Utilisez $sce.trustAsHtml() dans le contrôleur pour marquer la chaîne HTML comme étant sûre pour le rendu. Cette méthode permet d'injecter le contenu dans la vue sans s'échapper :
$scope.thisCanBeusedInsideNgBindHtml = $sce.trustAsHtml(someHtmlVar);
ngSanitize
Incorporer la ressource angulaire-sanitize.min.js dans le HTML. De plus, incluez ngSanitize dans le module AngularJS dans un fichier JavaScript :
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'ngSanitize'])
En employant ces techniques, vous pouvez insérer efficacement des fragments HTML générés dynamiquement dans les vues AngularJS à partir du contrôleur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!