2014-01-30 1 views
2

Я пытаюсь использовать аккордеон и содержание HTML таким образом:аккордеон с нг-повтор и нг-Bind-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.

В чем может быть проблема?

EDIT

Если я попробовать что-то вроде:

<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

Это потому, что содержимое HTML объявлено небезопасным по Угловому из-за его Strict Contextual Escaping.

Еще один ответ SO объясняет, как это можно решить: HTML injection, то есть, если вы используете угловую версию 1.2.0 или выше.

Я создал Plunkr, чтобы соответствовать вашему делу.

+0

извините, но используя $ sce, результат будет таким же. – JackTurky

+0

Какую угловую версию вы используете? Я копировал ваш код в Plunkr, и он работает. Можете ли вы построить Plunkr с кодом? –

+0

Я использую AngularJS v1.2.9 – JackTurky