Est-il possible de créer un HTML dans un contrôleur AngularJS et faire apparaître ce HTML dans la vue ?
Cela vient d'une exigence de transformer un blob JSON incohérent en une liste imbriquée de id: value
paires. Par conséquent, le HTML est créé dans le contrôleur et je cherche maintenant à l'afficher.
J'ai créé une propriété de modèle, mais je ne parviens pas à la rendre dans la vue sans qu'elle n'imprime simplement l'adresse de l'utilisateur. HTML .
Mise à jour
Il semble que le problème vienne du fait qu'Angular rende le HTML créé sous la forme d'une chaîne entre guillemets. Je vais essayer de trouver un moyen de contourner ce problème.
Exemple de contrôleur :
var SomeController = function () {
this.customHtml = '<ul><li>render me please</li></ul>';
}
Exemple de vue :
<div ng:bind="customHtml"></div>
Donne :
<div>
"<ul><li>render me please</li></ul>"
</div>
1 votes
Veuillez également consulter cette question demandant s'il est possible d'exécuter des scripts dans le HTML inséré.
0 votes
Est-il possible d'avoir plusieurs objets liés au même ng-bind ? Comme par exemple : "ng-bind="site.address_1 site.address_2 site.zip".
0 votes
si vous avez beaucoup de choses sur votre page, vous devrez modifier la ligne 15046 de angular.js (insanity) de
function htmlSanitizer(html) {...
. Les développeurs d'Angular ont décidé que vous devriez être capable de trouver n'importe quelle liaison html en passant lentement par tous les éléments cachés de vos pages un par un pour trouver ce SEUL morceau de html manquant. ! !! très en colère contre une telle supposition ! !!0 votes
Désolé, la réponse choisie par Luke n'est pas forcément la bonne. La bonne réponse se trouve dans une autre question ici . Fondamentalement, "ng-bind-html-unsafe rend uniquement le contenu en HTML. Il ne lie pas la portée d'Angular au DOM résultant. Vous devez utiliser le service $compile à cette fin."
0 votes
ng-bind supprime tout le html interne, ce qui n'est pas la façon dont le filtre fonctionnerait, c'est correct quand le filtre est la seule valeur.
0 votes
À partir d'Angular 4, c'est la façon dont cela fonctionne maintenant : <div [innerHTML]="htmlString"> </div> Tiré de cette question : stackoverflow.com/questions/31548311/angular-html-binding/