angularjs - 使用过滤在ng-repeat中反向计数

时间:2016-12-26 20:34:29

标签: angularjs ng-repeat

我有一系列115本书,详细存储在ng-repeat中。使用{{$ index +1}}时,会显示1到115的计数。如果我按姓氏过滤书籍并显示12,{{$ index + 1}}将显示1到12的计数。是否可以使用$ index显示反向计数,以便计数以最高编号开头并降到最低?如果没有过滤,这将使用{{details.length - $ index}},但是当过滤12个项目的结果时,显示115到104而不是12到1.

我有这样的重复:

<tr ng-repeat="det in details | orderBy:['-YEAR_READ','-UniqueCounter'] | filter:searchingFor>
    <td>{{$index + 1}}</td>
    <td>{{details.length - $index}}</td>
    <td>

2 个答案:

答案 0 :(得分:2)

目前,在显示您所指的未过滤集合的索引时,您无法使用details.length变量查看过滤结果计数。使用as使用别名过滤器对象可以实现ng-repeat="item in item | filter: { prop: 'search' }| customFilter as filteredResult"

之类的技巧
<tr 
  ng-repeat="det in details | orderBy:['-YEAR_READ','-UniqueCounter'] | filter:searchingFor as filtered">
    <td>{{$index + 1}}</td>
    <td>{{filtered.length - $index}}</td>
    <td>
</tr>

答案 1 :(得分:0)

您可以向集合中应用新的过滤器以获得相反的行为,例如:

app.filter('reverse', function() {
  return function(items) {
    return items.slice().reverse();
  };
});

并使用它:

<tr ng-repeat="det in details |reverse | orderBy:['-YEAR_READ','-UniqueCounter'] | filter:searchingFor >
    <td>{{$index + 1}}</td>
    <td>{{details.length - $index}}</td>
    <td>
</tr>