0

Я хотел бы создать директиву, которая не нуждается в ngRepeat, потому что в директиве есть некоторые дополнительные функции, которые не играют хорошей роли с ngRrepeat.Создать список без ngRepeat

Это моя директива с нг-повторить:

<div> 
<ul> 
    <li ng-repeat="item in items track by $index" ng-class="attrs.itemTheme" data-item="{{ item[attrs.itemId]}}"> 
     <div ng-include="attrs.tpl"></div> 
    </li> 
</ul> 
</div> 

attrs.tpl, нт-измерение другой директива, которая использует значения элементов из ngRepeat:

<script type="text/ng-template" id="dimension-item-tpl.html"> 
    <div nt-dimension x-attrs="item"></div> 
</script> 

Без ngRepeat:

<div> 
    <ul></ul> 
</div> 

Может кто-нибудь, пожалуйста, приведи пример, я с этим борюсь.

Пример кода: http://jsfiddle.net/mato75/4zhLtjbw/

Не работает пример: http://jsfiddle.net/mato75/ztLhpf2g/

Got скомпилировать и добавить шаблон ngIncluded, но проблема в том, что она собирает только последний, потому что цикл дайджеста должен замедляться.

var el = jqElm.find('ul'); 
scope.attrs.list.forEach(function (vl) { 
    var tmp = 
     '<li class="' + attrs.itemTheme + '" data-item="' + vl.id + '">' + 
      '<div ng-include="\'' + attrs.itemTpl + '\'"></div>' + 
       '</li>'; 

    scope.item = vl; // this is to slow :(

    var b = $compile(tmp)(scope); 
    el.append(b); 
}); 
+0

Посмотрите на этот пост http://stackoverflow.com/questions/16269184/how-to-insert-compiled-html-code-inside-the-directive-without-getting- digest –

+0

Ошибка: [$ интерполяция: interr] Невозможно интерполировать: {{generatedList}} – puppeteer701

+0

и как это будет работать, здесь мне все равно нужно ngRepeat – puppeteer701

ответ

1

Вам необходимо вручную создать собственный объем для каждого li, поэтому каждый элемент имеет свои собственные данные.

var ul = jqElm.find('ul'); 

scope.list.forEach(function (vl) { 
var li = '<li><div ng-include="\'item-tpl2.html\'"></div></li>'; 
var newScope = scope.$new(); 
newScope.item = vl; 
var cLi = $compile(li)(newScope); 
ul.append(cLi); 
+0

спасибо, это действительно потрясающе. thx, если я когда-нибудь встречу вас, первый раунд на мне – puppeteer701

+0

Просто отметьте этот вопрос, как ответ;) – Pr0gr4mm3r

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