2013-09-30 2 views
1

У меня есть частичная, которая имеет директиву, которая отображает кучу вещей в цикле, используя скомпилированную HMTL-as-строку внутри директивы. Эта сама HTML-строка содержит ng-include, которая не отображает.AngularJS для визуализации шаблона внутри компиляции внутри цикла внутри частичного

Пожалуйста, смотрите мой jsfiddle example

В принципе, это не включает в себя template2.html:

element.html('<span>The name is ' + scope.content.name + '!</span><div ng-include src="template2.html"></div><br>'); 

Все указатели будут оценены.

Спасибо!

ответ

4

WORKING DEMO

просто нужно написать, как

src=" \'template2.html\'" 


var linker = function(scope, element, attrs) { 
    element.html('<span>The name is ' + scope.content.name + '!</span><div ng-include src=" \'template2.html\'"></div><br>'); 
    $compile(element.contents())(scope); 
}; 

подробнее в DOCS

+2

На всякий случай это неочевидно из вышеизложенного: изменение заключалось в том, чтобы указать ng-include src, поскольку он является постоянным, а не чем-то, что нужно искать в области. Соответствующая [строка в документах] (https://github.com/angular/angular.js/blob/c0ad2efb24e4fffff6cb503ca821fe7e0bd4618b/src/ng/directive/ngInclude.js#L35) – timruffles

3

ответ Винод в выше (замените src="template2.html" с src="\'template2.html\'") правильно, хотя я бы рекомендовал использовать фактический шаблон вместо вручную компилировать шаблон самостоятельно в функции ссылки. В вашем примере вы фактически не получаете преимущества двусторонней привязки. Вы просто принимаете вывод html функции компиляции, и он никогда не будет обновляться, если базовые данные изменятся. Вот ваш пример изменен, чтобы показать привязки (и шаблон исправления Винод компании):

http://jsfiddle.net/kf3vZ/5/

Обратите внимание, как если изменить значение любого из флажков, значение директивы не меняются.

Теперь вот версия с использованием template аргумента директивы:

http://jsfiddle.net/kf3vZ/7/

Теперь, если вы измените текстовые поля, значение директивы изменится также.

Еще одно замечание, так как вы уже используете script теги для ваших шаблонов, вы можете заменить template в своей директиве с templateUrl и обеспечить id шаблона сценария.

+0

Благодарим вас за ответ. Я уверен, что скоро приступят к этому сценарию, когда я преодолею первое препятствие, поэтому я просто вернусь сюда за советом. – opyate

Смежные вопросы