确定ng-repeat过滤器显示的结果数量

时间:2014-10-06 14:48:08

标签: javascript angularjs filter angularjs-ng-repeat angularjs-filter

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

3 个答案:

答案 0 :(得分:4)

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

在您的转发器中,您可以创建新阵列,即:peoplefiltered

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

之后只显示orignal数组和过滤数组的长度:

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>

答案 1 :(得分:0)

首先,ngRepeat包含以下内容:$index$first$middle$last,用于确定当前位置。所以我想你可能对$last感兴趣。我不确定的是它是拿起原始计数还是过滤计数。

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

ngRepeat

答案 2 :(得分:0)

我找到了答案here。解决方案是将过滤后的数据分配给ng-repeat中的新变量。可能会导致一些内存问题,但在我的情况下并不真正相关。