Con ng-bind-html-unsafe rimosso, come posso iniettare HTML?


265

Sto cercando di utilizzare il $sanitizeprovider e la ng-bind-htm-unsafedirettiva per consentire al mio controller di iniettare HTML in un DIV.

Tuttavia, non riesco a farlo funzionare.

<div ng-bind-html-unsafe="{{preview_data.preview.embed.html}}"></div>

Ho scoperto che è perché è stato rimosso da AngularJS (grazie).

Ma senza ng-bind-html-unsafe, ottengo questo errore:

http://errors.angularjs.org/undefined/$sce/unsafe


C'è una soluzione semplice per 1.2.23+, vedi post
John Henckel,

Risposte:


123
  1. Devi assicurarti che sanitize.js sia caricato. Ad esempio, caricalo da https://ajax.googleapis.com/ajax/libs/angularjs/[LAST_VERSION[/angular-sanitize.min.js
  2. devi includere il ngSanitizemodulo sul tuo app esempio:var app = angular.module('myApp', ['ngSanitize']);
  3. devi solo associarti ng-bind-htmlal htmlcontenuto originale . Non c'è bisogno di fare altro nel controller. L'analisi e la conversione vengono eseguite automaticamente dalla ngBindHtmldirettiva. (Leggi la How does it worksezione su questo: $ sce ). Quindi, nel tuo caso <div ng-bind-html="preview_data.preview.embed.html"></div>farebbe il lavoro.

3
È l'opzione più pulita per farlo in sicurezza. È arrivato con più dipendenze ma riguarda la sicurezza, quindi nessuna esitazione!
Pierre Maoui,

Usandolo con ionic 1.0.0-beta.13
jasonflaherty

3
Questo non funziona con alcuni tag, come l'input. Ovviamente non esiste un modo semplice per aggirare questo. Davvero frustrante.
Casey,

Il modo più comune e sicuro. Preferisci questo se intendi utilizzare bind-html in viste diverse.
eduardobursa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.