Aujourd'hui, j'ai essayé d'utiliser Rails comme backend pour fournir des données de format JSON. AngularJS est utilisé pour traiter les données JSON à l'avant. Quand AngularJS obtient un morceau de texte HTML. Si vous utilisez directement Data-ng-Bind, il est échappé. L'utilisation de Data-Ng-Bind-HTML peut annuler l'évasion.
Cependant, si vous utilisez directement Data-Ng-Bind-HTML, vous inviterez une erreur
La copie de code est la suivante:
Erreur: [$ sce: dangereuse] tentant d'utiliser une valeur dangereuse dans un contexte sûr.
Les fragments HTML doivent être marqués en tant que confiance en utilisant $ sce.trustashtml (html_in_string) avant de pouvoir être inesquises à l'aide de Data-ng-Bind-html = "html_in_string".
Parmi tous les articles que j'ai pris dans l'API ou par le biais d'angulaires, chaque article a un attribut HTML_Body qui est un fragment HTML rendu par Markdown ou Org.
Après avoir obtenu des données JSON via l'API, utilisez la méthode Angular.ForEach fournie par AngularJS pour marquer le HTML_Body de chaque message et enregistrer le résultat en tant que TrustEdBody, puis utiliser Data-Ng-Bind-Html = "Post.TrustEdBody" dans HTML pour annuler l'évasion.
Angularjs partie
La copie de code est la suivante:
Blog.Controller ('PostsController', Function ($ Scope, $ http, $ sce) {
$ scope.posts = [];
$ scope.syncposts = fonction () {
var demande = $ http.get ('http: / localhost: 3000 / posts.json');
request.success (fonction (réponse) {
$ scope.posts = angular.ForEach (angular.fromjson (réponse), fonction (post) {
post.trustedbody = $ sce.trustashtml (post.html_body);
});
});
};
$ scope.SyncPosts ();
});
Partie HTML
La copie de code est la suivante:
<div data-ng-bind-html = "post.trustedbody"> </div>