2014-04-16 45 views
0

我有一个简单的应用了几个过滤器的ng-repeat。现在,我为偶数结果添加了一个ng-class-even类,并且在应用过滤器时,类在运行过滤器之前似乎仍保留原始索引。这使得行在奇数位置与类“偶”相同。在ng-repeat上使用自定义过滤器导致ng-class-even/odd不起作用

HTML

<div data-ng-repeat="location in locations | topBranchFilter:topLocations | cityFilter:searchCity | filter:search" data-ng-class-even="'even'"> 
    ... 
</div> 

过滤(包括自定义过滤器使用这个简单的格式)

angular.module('App') 
.filter('cityFilter', function() { 
    return function(locations, searchCity) { 
    if (searchCity!=='') { 
     var filtered = []; 
     angular.forEach(locations, function(location) { 
     if(location.BranchStationCity==searchCity){ 
      filtered.push(location); 
     } 
     }); 
     return filtered; 
    } else { 
     return locations; 
    } 
    }; 
}); 

我想我的问题是,是ng-class-even不与自定义过滤器或多个过滤器的支持?

+0

可以重现:http://plnkr.co/edit/CcdMSWj0IQ9kd9hfRZjV?p=preview(类型在过滤器“4”) - 似乎是一个错误。 你可以使用CSS'':nth-​​child(偶数)'选择器来做样式 –

+0

谢谢。很久以前在Github上看到一个封闭的问题,所以认为它是我的代码。 – bennewton999

+1

@弗洛伊恩奥本,你的plunkr工程,如果你添加追踪:http://plnkr.co/edit/G3yzcdn3OhYHL0QU3fDj?p=preview OP看看这是否也为你修复它。在'ng-repeat'语句的最后加上'by index'。 – aet

回答

2

如果您在ng-repeat中添加'track by $ index',它应该可以解决这个问题。

<div data-ng-repeat="location in locations | topBranchFilter:topLocations | cityFilter:searchCity | filter:search track by $index" data-ng-class-even="'even'"> 
相关问题