2013-02-08 93 views
1

我试图在指令中使用ngRepeat - 但我真的不知道该怎么做。我关门了吗?Angular 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

我在那里补充说。对不起,我倾向于回答,然后修改很多。 – 2013-02-08 18:22:38

+1

@drew表示控制器作用域具有'mowers'属性,所以我不确定为什么链接函数在新的子作用域上创建另一个(它将隐藏/隐藏父作用域上的作用域),而不是只需访问父范围的属性即可。 – 2013-02-09 01:06:59

+0

我明白你的意思了。接得好。在我看来,他在做一个'范围:{}'。 – 2013-02-09 06:21:13