2017-02-27 38 views
1

我有這樣的例子: https://jsfiddle.net/3noebzgr/1/更新分頁表應用的過濾後AngularJS

一切正常,除非我的球衣號碼過濾我不能更新分頁。因此,如果我篩選球衣號碼1-3,球衣1在第1頁上,球衣2在第2頁上,球衣3在第4頁上,第3頁空着。我希望表格可以重新分頁以在一個頁面上顯示過濾列表(或更多,具體取決於項目數量)。 這是我PAGINATE功能:

$scope.paginate = function(value) { 
    var begin, end, index; 
    begin = ($scope.currentPage - 1) * $scope.numPerPage; 
    end = begin + $scope.numPerPage; 
    index = $scope.players.indexOf(value); 
    return (begin <= index && index < end); 
}; 

這是它被應用:

<tr ng-repeat="player in players | orderBy:sortType:sortReverse | filter:byRange('Number', minNum.Number, maxNum.Number) | filter:paginate"> 
     <td>{{ player.Name }}</td> 
     <td>{{ player.Number }}</td> 
     <td>{{ player.Position }}</td> 
     <td>{{ player.Team }}</td> 
     </tr> 

過濾器:

<select name="minNum" ng-model="minNum" ng-options="player.Number for player in players | orderBy:'Number'"> 
      <option value="">All</option> 
      </select> 

<select name="maxNum" ng-model="maxNum" ng-options="player.Number for player in players | orderBy:'Number'"> 
      <option value="">All</option> 
     </select> 

我已經嘗試過其他堆棧ov erflow的建議,但目前爲止還沒有工作。

回答

0

重新渲染$ scope.numPerPage使其等於$ scope.players.length,當單擊maxnumber時,每頁的數量將與玩家的長度相等。謝謝

$scope.paginate = function(value) { 
    var begin, end, index; 
    begin = ($scope.currentPage - 1) * $scope.numPerPage; 
    end = begin + $scope.numPerPage; 
    index = $scope.players.indexOf(value); 

    if ($scope.maxNum !== undefined) { 
     $scope.numPerPage = $scope.players.length; 
    } 

    return (begin <= index && index < end); 
}; 
+0

這可以使一切顯示在一個頁面上,但它通過刪除分頁來實現。有沒有辦法保持分頁,但將所有內容移動到同一頁面上,或者如果過濾的列表大於「numPerPage」,只是將當前列表重新分頁? – jcalton88