2015-04-03 87 views
0

我剛開始使用angularJS。我試圖用ng-repeat和分頁來實現項目列表。除了當我過濾結果時,一切正常。問題是,當有更多的結果,然後在適合頁面我不知道總共有多少項目,所以我不能重新生成分頁數據。AngularJS在應用多個過濾器時從單個過濾器獲取過濾列表計數

若要過濾列表計數我用這個:

$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:query之後但在limitTo:(itemsPerPage*currentPage)$index >= (currentPage -1)*5之前以某種方式獲得物品的計數。

我該如何做到這一點?

我NG重複部分看起來是這樣的:

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

回答

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); 
     } 
    }; 
+0

很遺憾,這不起作用,因爲'$ scope.totalItems'等於應用了所有過濾器後的項目數 – Einius 2015-04-07 06:35:43