2014-01-30 59 views
2

我試圖用手風琴和HTML內容是這樣的:手風琴與NG-重複和NG綁定-HTML將無法正常工作

<accordion> 
    <accordion-group ng-repeat="item in items"> 
     <accordion-heading> 
      <a class="btn btn-primary btn-block btn-elenco"> 
     <img postsrc="img/flag/flag_{{item.index}}.jpg"> 
     </a> 
     </accordion-heading> 
     <p ng-bind-html="item.content"></p> 
    </accordion-group> 
</accordion> 

var items = []; 
for(var i=0;i<10;i++){ 
var content = "<div>TEST</div>"; 
items.push({index:i,content:content}); 
} 
$scope.items = items; 

var app = angular.module('MyApp',['ngSanitize','ui.bootstrap']); 

手風琴作品,但html不會呈現爲p標記。

可能是什麼問題?

編輯

如果我嘗試這樣的:

<div ng-bind-html="to_trusted(item.content)"></div> 

並添加功能控制器:

$scope.to_trusted = function(html_code) 
    { 
    console.log(html_code); 
    return $sce.trustAsHtml(html_code); 
    } 

沒有什麼變化,並在控制檯中我得到許多 「不確定」!

回答

5

這是因爲由於它的Strict Contextual Escaping,所以HTML內容被Angular聲明爲不安全。

另一個SO回答已經清楚地解釋瞭如何解決這個問題:HTML injection,也就是說,如果您使用的是Angular版本1.2.0或更高版本。

我創建了一個Plunkr以符合您的情況。

+0

對不起,但使用$ sce的結果是一樣的。 – JackTurky

+0

你使用什麼角度的版本?我在Plunkr中複製了你的代碼,它可以工作。你可以用你的代碼構建一個Plunkr嗎? –

+0

我使用AngularJS v1.2.9 – JackTurky