2013-02-08 5 views
1

Я пытаюсь использовать ngRepeat в директиве, но я действительно не знаю, как это сделать. Я близко?Угловой JS - ngRepeat в шаблоне

Косилки - это массив в моем контроллере, где используется эта директива.

.directive('slider', function() { 
return function() { 
    template: '<slider><film><frame ng-repeat="mower in mowers">{{mower.series}}</frame></film></slider>'; 
    replace: true; 
     scope: true; 
    link: function postLink(scope, iElement, iAttrs) { 
      // jquery to animate 
     } 
    } 
}); 

ответ

1

Да, вы близки, но синтаксис отключен. и вам нужно присвоить что-то mowers по вашему объему.

.directive('slider', function() { 
return { 
    restrict: 'E', //to an element. 
    template: '<film><frame ng-repeat="mower in mowers">{{mower.series}}</frame></film>', 
    replace: true, 
    scope: true, // creates a new child scope that prototypically inherits 
    link: function postLink(scope, iElement, iAttrs) { 
      scope.mowers = [ 
       { series: 1 }, 
       { series: 2 }, 
       { series: 3 } 
      ]; 
     } 
    } 
}); 

Кроме того, вам не нужно указывать <slider>.

Приведенный выше код также предполагает, что вы сделали директивы для <film> и <frame>.

Наконец, если вы хотите, чтобы передать массив косилки из внешнего объема, вы бы изменить масштаб установки этого:

scope: { 
    mowers: '=' 
} 

И вы могли бы установить его так:

<slider mowers="myMowers"></slider> 

где myMowers - это переменная на вашем контроллере или в пределах родительской директивы.

Я надеюсь, что это поможет.

+0

Я добавил, что там. Извините, я склонен отвечать, а затем много пересматриваю. –

+1

@drew указал, что область управления имеет свойство 'mowers', поэтому я не знаю, почему функция ссылки создает другую в новой области дочернего объекта (которая будет скрывать/теневать в области родительской области), а не просто доступ к свойству в родительской области. –

+0

Я понимаю, что вы имеете в виду. Хороший улов. На мой взгляд, он занимался «scope: {}». –

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