2013-01-09 8 views
15

che sto cercando di fare qualcosa di simileCome modificare innerHTML valutando un'espressione angolare

<div id="{{item.id}}" ng-repeat="item in itemList"> 
    {{item.innerHTML}} 
</div> 

item.innerHTML contiene il codice html che ha bisogno di andare lì, ma dato che è parte del Dom, è sostituito come una stringa. C'è un modo per averlo semplicemente sostituire l'innerHTML?

Grazie!

risposta

31

è necessario utilizzare ngBindHtml:

http://plnkr.co/edit/n1rLzgEZQoa2tJf0qnVZ?p=preview

nel controller:

$scope.content = "<b>this is bold content</b>"; 

html:

<div ng-bind-html="content"></div> 

è necessario il seguente modulo:

http://code.angularjs.org/1.0.3/angular-sanitize.js

Assicurarsi di dichiarare ngSanitize come una dipendenza del modulo, per esempio:

var app = angular.module('angularjs-starter', ["ngSanitize"]); 
+0

Ho provato questo, ma non sembra funzionare. Questo è ciò che ottengo nell'html

. Mi sto perdendo qualcosa? – pkrish

+0

l'esempio funziona per quanto ne so: http://plnkr.co/edit/n1rLzgEZQoa2tJf0qnVZ?p=preview devi aver dimenticato di fare qualcosa, inoltre non mettere {{}} in ng-bind-html dato che è un espressione. – mpm

+0

Grazie! Ha funzionato. Pensavo che tu usassi {{}} per valutare le espressioni? http://docs.angularjs.org/guide/expression – pkrish