How to render html mit AngularJS Vorlagen
Dies ist meine Vorlage:
<div class="span12">
<ng:view></ng:view>
</div>
- und das ist meine Ansicht-Vorlage:
<h1>{{stuff.title}}</h1>
{{stuff.content}}
Ich bin immer der content
als html und ich will zeigen, dass in einer Ansicht, aber alles was ich erhalte ist reinen html-code. Wie kann ich machen, dass HTML?
- Wo ist der HTML aus? Unter anderen Umständen, Sie wollen
ngBindHtmlUnsafe
,ngSanitize
oder eine benutzerdefinierte Richtlinie. - Der html-Code aus meiner Datenbank
- Der Inhalt ist absolut vertrauenswürdig?
- können Sie bitte erklären, mehr Informationen zu trusted. ich meine, ich bin entring die Daten selbst, aber ich würde gerne wissen, was sind die worst-case-Szenarien
- Zum Beispiel, wenn die HTML enthält ein
script
- tag die browser ausgeführt würde. Diese Art der "injection" - Angriff ist ein gemeinsamer Weg von schädlichen apps und stehlen Nutzer-Daten. AngularJS verfügt über ein separates Modul namensngSanitize
, die Sie verwenden können, um Streifen Sie den HTML-von Gefahr-tags; es hat auch eine Richtlinie mit dem NamenngBindHtml
, das funktioniert genau wiengBindHtmlUnsafe
, aber Streifen die gefährliche tags für Sie. Wenn der Inhalt liegt ganz bei Ihnen - und nicht von Nutzern oder Dritten - dann brauchst du es nicht. - Oh, und wenn Sie ziehen, Vorlagen von einem server
ngInclude
oder eine (einfache!) benutzerdefinierte Richtlinie wäre wahrscheinlich der bessere Weg zu gehen. - mögliche Duplikate von "HTML Einfügen" in die Ansicht mit AngularJS
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden-
Müssen Sie mitteilen Winkel zu ihm nicht entrinnen.
<span ng-bind-html-unsafe="stuff.content"></span>
.ng-bind-html
allein arbeitete, ohne mittrustAsHtml
Dazu habe ich einen benutzerdefinierten filter verwenden.
In meiner app:
Dann, in der Ansicht:
$sce.trustAsHtml
, ich dont müssenngSanitize
Abhängigkeit zu der app-Modul? Ich bin mit Angular 1.3Sollte man Folgen Sie den Winkel-docs und verwenden, $sce $sce ist ein Dienst, der eine Strikt Kontextuelle Flucht Dienstleistungen zu AngularJS. Hier ist ein docs: http://docs-angularjs-org-dev.appspot.com/api/ng.directive:ngBindHtmlUnsafe
Nehmen wir ein Beispiel mit asynchroniously laden Eventbrite login-button
In Ihrem controller:
In Ihrer Sicht nur hinzufügen:
In Ihre Dienste:
Im Winkel 4+, die wir benutzen können
innerHTML
- Eigenschaft anstelle derng-bind-html
.In meinem Fall, es funktioniert und ich bin mit Winkel 5.
In.ts-Datei
Damit vielleicht möchten Sie diese in Ihrem index.html zum laden der library, script, und initialisieren Sie die app mit anzeigen:
Dann yourView.html könnte nur sein:
scripts.js hätte Sie Ihren controller mit Daten $scope würde es.
Schließlich werden Sie haben, um config-Routen und zuweisen der controller zum anzeigen, für die es $scope (d.h. Ihre Daten-Objekt)
Ich noch nicht getestet, sorry wenn es ein bug ist, aber ich denke, das ist die Angularish Weg, um Daten