当应用多个过滤器时,AngularJS从单个过滤器获取过滤列表计数

时间:2015-04-03 13:20:57

标签: javascript angularjs

我刚开始使用angularJS。我尝试使用ng-repeat和分页来实现项目列表。除非我过滤结果,否则一切正常。问题是,当页面中有更多结果时,我不知道总共有多少项目,所以我无法重新生成分页数据。

要获得筛选列表计数,请使用以下命令:

$scope.filterApplied = function (filteredList, query) {

        $scope.filteredItems =  $filter('filter')(filteredList, query);
        if ($scope.filteredItems != null) {
            $scope.totalItems = filteredList.length;
        }
    };

但是如果我将每页的最大项目设置为5,那么有10个结果$scope.totalItems等于5。

我需要在应用filter:querylimitTo:(itemsPerPage*currentPage)$index >= (currentPage -1)*5之前以某种方式获取项目数。

我如何实现这一目标?

我的ng-repeat部分看起来像这样:

<tr ng-repeat="person in peopleList | filter:query | orderBy:orderByField:reverseSort | limitTo:(itemsPerPage*currentPage)" ng-if="lastResult($index)">

1 个答案:

答案 0 :(得分:2)

您可以在控制器中为limitTo创建变量,并且只有在获得过滤列表的长度后才能设置它:

HTML

<tr ng-repeat="person in peopleList | filter:query | orderBy:orderByField:reverseSort | limitTo:limit" ng-if="lastResult($index)">

控制器

$scope.limit = ($scope.itemsPerPage*$scope.currentPage);

$scope.filterApplied = function (filteredList, query) {

    $scope.filteredItems =  $filter('filter')(filteredList, query);
      if ($scope.filteredItems != null) {
          $scope.limit=0;
          $scope.totalItems = filteredList.length;
          $scope.limit = ($scope.itemsPerPage*$scope.currentPage);
      }
    };