<div ng-repeat="widget in widgets"
ng-class="">
<div>{{widget.row}}</div>
</div>
我试图根据repeat中的一个特定值在repeat中应用一个类,例如
if widget.row = 0
,它是第一个显示该值的小部件,然后给它一个类,所有其他具有0
行的小部件都不会得到该类。如果它等于1
或2
等等,就需要这样,所以我不能只使用$first
,因为会有多个行值和多个小部件,例如,它可能输出如下内容:0 0 0 1 1 2 2 2
最佳答案
最佳实践是在控制器的init函数中准备数据。很好而且吻!这是在控制函数中准备数据的最好方法,而不是误用AngularJS的E2E绑定。它解决了你的问题,所以当没有必要(如你所要求的)的时候,就不会编写类。它一次又一次地进行,而不是像ng-class="shouldIAddAClass()"
那样通过E2E绑定一次又一次地调用函数。
查看
<div ng-repeat="widget in widgets"
ng-class="{ 'first' : widget.first }">
<div>{{widget.row}}</div>
</div>
控制器
$scope.widgets = [{
row: 0
}, {
row: 2
},{
row: 0
},{
row: 1
},{
row: 1
},{
row: 2
},{
row: 0
}];
//self calling init function
(function init () {
var widgetRowFound = {};
angular.forEach($scope.widgets, function (widget, key) {
if (angular.isDefined(widgetRowFound[widget.row])) {
$scope.widgets[key].first = false;
} else {
$scope.widgets[key].first = true;
widgetRowFound[widget.row] = true;
}
});
})();