Ich habe viel danach gesucht, aber entweder kann ich die Antwort nicht finden oder ich verstehe sie nicht. Ein konkretes Beispiel gewinnt die Abstimmung =)
- Ich habe eine Funktion, die eine HTML-Zeichenfolge zurückgibt.
- Ich kann die Funktion nicht ändern.
- Ich möchte, dass das durch die Zeichenfolge dargestellte HTML in das DOM eingefügt wird.
- Ich verwende gerne einen Controller, eine Direktive, einen Dienst oder etwas anderes, das funktioniert (und eine vernünftige Vorgehensweise ist).
- Haftungsausschluss: Ich verstehe $ compile nicht gut.
Folgendes habe ich versucht:
// My magic HTML string function.
function htmlString (str) {
return "<h1>" + str + "</h1>";
}
function Ctrl ($scope, $compile) {
$scope.htmlString = htmlString;
}
Ctrl.$inject = ["$scope", "$compile"];
Das hat nicht funktioniert.
Ich habe es auch als Direktive versucht:
// My magic HTML string function.
function htmlString (str) {
return "<h1>" + str + "</h1>";
}
angular.module("myApp.directives", [])
.directive("htmlString", function () {
return {
restrict: "E",
scope: { content: "@" },
template: "{{ htmlStr(content) }}"
}
});
... and in my HTML ...
<html-string content="foo"></html-string>
Hilfe?
Hinweis
Ich habe mir unter anderem diese angesehen, konnte sie aber nicht zum Laufen bringen.
ng-bind-html-unsafe
ist bis 1.0.8, danach nur,ng-bind-html
weil die sicheren und unsicheren Funktionen zusammengeführt wurden. Github.com/angular/angular.js/blob/master/…ngSanitize
mein Hauptmodul hinzufügen , damitng-bind-html
es funktioniert.Sie können auch , verwenden
$sce.trustAsHtml('"<h1>" + str + "</h1>"')
. Wenn Sie weitere Informationen benötigen, lesen Sie bitte $ scequelle