<div ng-repeat="widget in widgets"
     ng-class="">
     <div>{{widget.row}}</div>
</div>

我试图根据repeat中的一个特定值在repeat中应用一个类,例如if widget.row = 0,它是第一个显示该值的小部件,然后给它一个类,所有其他具有0行的小部件都不会得到该类。如果它等于12等等,就需要这样,所以我不能只使用$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;
        }
    });
})();

09-17 12:53