J'ai beaucoup cherché, mais je ne trouve pas la réponse ou je ne la comprends pas. Un exemple spécifique remportera le vote =)
Voici ce que j'ai essayé:
// My magic HTML string function.
function htmlString (str) {
return "<h1>" + str + "</h1>";
}
function Ctrl ($scope, $compile) {
$scope.htmlString = htmlString;
}
Ctrl.$inject = ["$scope", "$compile"];
Ça n'a pas marché.
Je l'ai essayé aussi comme directive:
// 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>
Aidez-moi?
Remarque
Je les ai regardés, entre autres, mais je n'ai pas réussi à le faire fonctionner.
Regardez l'exemple dans ce lien:
http://docs.angularjs.org/api/ngSanitize.$sanitize
Fondamentalement, angular a une directive pour insérer du HTML dans des pages. Dans votre cas, vous pouvez insérer le HTML en utilisant la directive ng-bind-html de la manière suivante:
Si vous avez déjà fait tout cela:
// My magic HTML string function.
function htmlString (str) {
return "<h1>" + str + "</h1>";
}
function Ctrl ($scope) {
var str = "HELLO!";
$scope.htmlString = htmlString(str);
}
Ctrl.$inject = ["$scope"];
Ensuite, dans votre code HTML dans le cadre de ce contrôleur, vous pouvez
<div ng-bind-html="htmlString"></div>
vous pouvez aussi utiliser $sce.trustAsHtml('"<h1>" + str + "</h1>"')
si vous voulez en savoir plus, veuillez vous référer à $ sce