Długo szukałem tego, ale albo nie mogę znaleźć odpowiedzi, albo jej nie rozumiem. Konkretny przykład wygra głos:)AngularJS: Wstaw HTML z ciągu znaków
- Mam funkcję, która zwraca ciąg znaków HTML.
- Nie mogę zmienić funkcji.
- Chcę, aby html reprezentowany przez ciąg znaków został wstawiony do DOM.
- Chętnie korzystam z kontrolera, dyrektywy, usługi lub cokolwiek innego, co działa (i jest rozsądnie dobrą praktyką).
- Zastrzeżenie: Nie rozumiem $ kompilacji dobrze.
Oto co próbowałem:
// My magic HTML string function.
function htmlString (str) {
return "<h1>" + str + "</h1>";
}
function Ctrl ($scope, $compile) {
$scope.htmlString = htmlString;
}
Ctrl.$inject = ["$scope", "$compile"];
To nie działa.
próbowałem go jako dyrektywa TOO:
// 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>
Pomoc?
Uwaga
Patrzyłem na nich, między innymi, ale nie mógł tego dokonać.
- AngularJS : Insert HTML into view
- AngularJS $http HTML Parser
- angularjs - inserting $compile-d html
- AngularJS doesn't execute in HTML inserted with document.write()
- Escape HTML text in an AngularJS directive
Dzięki! To się udało. Wprowadzono kilka zmian: Naprawiono link (bardzo dziwnie go parsowałem), zmieniono "ng-bind-html" na "ng-bind-html-dangerous" i dałem pełniejszy przykład. –
To "ng-bind-html-dangerous" aż do 1.0.8, po tym jest po prostu 'ng-bind-html', ponieważ bezpieczne i niebezpieczne funkcje zostały scalone https://github.com/angular/angular.js/ blob/master/CHANGELOG.md # 120-rc1-spooky-giraffe-2013-08-13 – Matthew
Otrzymuję ten błąd: https://docs.angularjs.org/error/$sce/unsafe in 1.3 –