Sto provando a visualizzare una stringa HTML nella mia vista angolare.
All'inizio, ingenuamente provato questo:
<p>{{ad.text}}</p>
$scope.ad = { 'text' : '<a href="#">Link</a>'}; // Dynamically fetched, etc. This is just an example text
Ma questo solo visualizza <a href="#">Link</a>
nella vista, non: link.
Dopo alcune ricerche, mi sono imbattuto in ngSanitize. L'ho provato, ma elimina completamente tutto il codice HTML per lasciare solo testo grezzo. Piuttosto sicuro davvero. Un po 'troppo, in realtà. Ad ogni modo, ngSanitize ora non è aggiornato.
This SO post indica che ora il servizio $ sce deve essere utilizzato al posto di ngSnitize.
A seguito di queste diverse soluzioni, qui è quello che mi si avvicinò con:
HTML
<p ng-bind-html="htmlAdText"></p>
JS
$scope.ad = { 'text' : '<a href="#">Link</a>'};
$scope.htmlAdText = $sce.trustAsHtml($scope.ad.text);
Ma questo errore viene in console:
ReferenceError: $sce is not defined
Cosa mi fa schifo che il il servizio $ sce dovrebbe far parte del core di Angular dalla v1.2, e sto usando la v1.3.9.
Cosa sta succedendo qui? Qualcuno ha un metodo definitivo per visualizzare l'HTML in una vista AngularJS (senza filtri che lasciano solo il testo non elaborato)?
Provare a utilizzare angular.element – Tyranicangel
Cosa vuoi dire? Inietti HTML usando un wrapper jQuery? Come lo faresti nel cambio di 'ad.text'? Lo sto dando un'occhiata. –
Hai iniettato $ sce nel controller? –