通过ng重复筛选器确定显示的结果数

Determining how many results are shown by ng-repeat filter

本文关键字:显示 结果 ng 筛选 通过      更新时间:2023-09-26

如果我将ng-repeatfilter一起使用,我如何确定过滤掉了多少元素(反之亦然,显示了多少)?具体来说,我想创建一个搜索栏来创建过滤器,但我也想显示过滤器隐藏了多少元素(例如Showing 6 of 10 results)。

请参阅此处http://jsbin.com/xuyuy/1/edit

在你的中继器中,你可以创建新的阵列,即:人员过滤

ng-repeat="person in personsfilterd = (persons | filter : search )

然后只显示原始阵列和滤波阵列的长度:

Showing {{personsfilterd.length}} of {{persons.length }} results

此处的完整代码:

var app = angular.module('app', []);
app.controller('fCtrl', function($scope) {
  $scope.persons = [
    'Mike', 'Tom', 'Tim', 'Jim', 'Ken'
  ]
});
 <div ng-app="app">
    <div ng-controller="fCtrl">
      <input type="text" ng-model = "search"> Showing {{personsfilterd.length}} of {{persons.length }} results
      <li ng-repeat="person in personsfilterd = (persons | filter : search )">{{person}}</li>
    </div>
    </div>

首先,ngRepeat有以下几种:$index$first$middle$last,用于确定当前位置。所以我想你可能对$last感兴趣。我不确定的是,它是会提取原始计数还是过滤后的计数。

编辑:通过设置varX.length并在模板(HTML代码)中使用它,您可以从ctrl中获得原始值的计数,然后,假设$last返回最终计数+1(因为它是基于0的),您可以在应用过滤器后获得计数。

ng重复

我在这里找到了答案。解决方案是将过滤后的数据分配给ng-repeat中的一个新变量。可能会导致一些记忆问题,但与我的情况无关。