【问题标题】:Determining how many results are shown by ng-repeat filter确定 ng-repeat 过滤器显示多少个结果
【发布时间】:2014-11-30 20:46:45
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    首先,ngRepeat 有这些:$index$first$middle$last 用于确定当前位置。所以我猜你可能对$last 感兴趣。我不确定的是它会选择原始计数还是过滤后的计数。

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

    ngRepeat

    【讨论】:

      【解决方案2】:

      请看这里http://jsbin.com/xuyuy/1/edit

      在您的中继器中,您可以创建新数组,即:personsfiltered

      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>
      

      【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-29
        • 2020-05-11
        • 2015-10-09
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多