2015-10-26 4 views
3

Я включил dir paginate в мой проект angularjs, чтобы легко обрабатывать разбиение на страницы, он хорошо работает до момента, когда я хочу отфильтровать все результаты страниц.AngularJS dirPaginate Only Фильтрация текущей страницы

Контроллер, который содержит данные и фильтр выглядит так:

app.controller('listCtrl', function ($scope, services) { 
     $scope.sort = function(keyname){ 
     $scope.sortKey = keyname; //set the sortKey to the param passed 
     $scope.reverse = !$scope.reverse; //if true make it false and vice versa 
    } 

     $scope.currentPage = 1; 
     $scope.pageSize = 10; 
    services.getPosts().then(function(data){ 
     $scope.posts = data.data; 
    }); 
}); 

DIR-постраничной выглядит так

<div dir-paginate="data in posts | itemsPerPage:5 | orderBy:sortKey:reverse" class="col-xs-12 post"> 
        <div id="title" class="col-xs-3"></div> 
        <div id="title" class="col-xs-9"></div> 

        <div id="poster" class="col-xs-3"> 
         <img src="pics/house.jpg" id="avatar"> 
         <a ng-if="data.user_name == '<?php echo $currentUser?>'" href="edit-post/{{data.post_id}}"> Edit </a> 
        </div> 
        <div class="col-xs-9"> 
         <div class="col-xs-12"> 
          <p class="timestamp">{{ data.post_datetime }}</p> 
         </div> 
         <div id="rant"> 
          <span style="word-wrap: break-word;">{{ data.post_content }}</span> 
         </div> 
         <div id="stats" class="col-xs-12">        <a href="#"><img src="pics/comment.png"></a><span>3</span> 

         </div> 
        </div> 
       </div> 

<dir-pagination-controls 
     max-size="5" 
     direction-links="true" 
     boundary-links="true" > 
    </dir-pagination-controls> 

я называю функцию сортировки следующим образом:

<button id="changeLikes" ng-click="sort('post_id')">ID</button> 

Он сортирует только текущую страницу данных, если я использую разбиение на страницы и нажимаю страницу 2, она будет фильтровать только страница 2 и т. д., любые идеи здесь были бы очень полезны. getPosts() возвращает данные post через php без каких-либо групповых или порядковых предложений в sql, которые влияют на угловую.

ответ

1

Вы пробовали листать порядок фильтров, т.е.

<div dir-paginate="data in posts | orderBy:sortKey:reverse | itemsPerPage:5" class="col-xs-12 post"> 

dir-paginate docs состояние:

itemsPerPage: expression должен включать этот фильтр. Требуется по логике разбиения на страницы. Синтаксис такой же, как любой фильтр: itemsPerPage: 10, или вы также можете привязать его к свойству $ scope: itemsPerPage: pageSize. Примечание. Этот фильтр должен появиться после любых других фильтров , чтобы работать как ожидалось. Безопасное правило - всегда указывать в конце выражения.

Смежные вопросы