angularjs - 在带过滤的 ng-repeat 中反向计数

angularjs - counting in reverse in ng-repeat with filtering

我在 ng-repeat 中详细存储了 115 本书的数组。当使用 {{$index +1}} 时,出现 1 到 115 的计数。如果我按姓氏过滤书籍并显示 12,{{$index + 1}} 将显示 1 到 12 的计数。是否可以使用 $index 显示反向计数,以便计数从最高数字开始去最低?如果没有过滤,这将使用 {{details.length - $index}} 工作,但是当过滤 12 个项目的结果时显示 115 到 104 而不是 12 到 1。

我有一个像这样的 ng-repeat:

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

当前,在显示索引时,您引用的是未过滤的集合,因此您无法使用 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>

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

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>