HTML-Fragmente in Ansichten von AngularJS-Controllern einfügen
AngularJS bietet verschiedene Möglichkeiten, die Ansicht basierend auf der Controller-Logik dynamisch zu ändern. In bestimmten Szenarien besteht die Notwendigkeit, HTML-Fragmente dynamisch innerhalb des Controllers zu generieren und in der Ansicht anzuzeigen. Um dies zu erreichen, muss berücksichtigt werden, wie AngularJS injizierte Inhalte interpretiert.
AngularJS-HTML-Rendering verstehen
Beim Festlegen einer Modelleigenschaft auf ein HTML-Fragment wird AngularJS automatisch maskiert die HTML-Entitäten aus Sicherheitsgründen. Wenn jedoch beabsichtigt ist, den HTML-Code als tatsächlichen Inhalt anzuzeigen, stellt dieses Escape eine Herausforderung dar. Der resultierende HTML-Code wird als Zeichenfolge in Anführungszeichen gerendert und verhindert so seine Ausführung.
Lösungen zum Rendern dynamischer HTML-Fragmente
Um diese Einschränkung zu überwinden, bietet AngularJS die folgenden Lösungen:
ng:bind-html (Angular 1.x)
Verwenden Sie die ng:bind-html-Direktive im HTML, um den gewünschten HTML-Inhalt darzustellen. Dieser Ansatz wirft jedoch potenzielle Sicherheitslücken auf und erfordert die Verwendung von $sce oder ngSanitize.
$sce
Verwenden Sie $sce.trustAsHtml() im Controller zum Markieren die HTML-Zeichenfolge als sicher für die Darstellung. Mit dieser Methode kann der Inhalt ohne Escape in die Ansicht eingefügt werden:
$scope.thisCanBeusedInsideNgBindHtml = $sce.trustAsHtml(someHtmlVar);
ngSanitize
Integrieren Sie die Ressource „angular-sanitize.min.js“ in den HTML-Code. Fügen Sie außerdem ngSanitize in das AngularJS-Modul in einer JavaScript-Datei ein:
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'ngSanitize'])
Durch den Einsatz dieser Techniken können Sie dynamisch generierte HTML-Fragmente effektiv vom Controller aus in AngularJS-Ansichten einfügen.
Das obige ist der detaillierte Inhalt vonWie kann ich dynamische HTML-Fragmente sicher von meinem Controller aus in AngularJS-Ansichten einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!