使用 ng-repeat 时,我应该如何在其中使用控制器?
例如,如果我在一周内循环一组天:
<ul ng-controller="WeekCtrl">
<li ng-repeat="d in days">
<span ng-controller="DayCtrl">
{{dayOfWeek}} {{date}}: {{info}}
</span>
</li>
</ul>
但我DayCtrl
想知道今天是哪一天d
,所以必须把它拉出范围:
app.controller('DayCtrl', function($scope){
$scope.date = $scope.d.date;
$scope.dayOfWeek =
['Mon','Tue','Wed','Thr','Fri','Sat','Sun']
[$scope.d.date.getDay()];
$scope.info = '... extra info...';
});
但这会在显示器和控制器之间产生依赖关系。理想情况下,我想d.date
作为一个论点传入。
我可以编写一个指令+控制器并d.date
作为属性传入。但这意味着我必须编写更多内容并将当天的 html 移动到单独的模板中,并且我不打算在其他地方使用 DayCtrl。
或者,我可以尝试使用<span ng-init="date=d.date">
,但再次感觉很脏。
这样做的正确方法是什么。
Plunker 上的完整示例代码:http://plnkr.co/edit/wUxNFSEGjcDN7KlOLYdv显示了我在几天和几周内遇到的问题。