Фильтр с нумерацией страниц с использованием угловых - PullRequest
0 голосов
/ 27 февраля 2019

Я создаю панель мониторинга, используя angular, где у меня есть таблица с панелью поиска и разбиением на страницы. Без ввода значения в панели фильтров все работает нормально, но как только я ввожу значение. Фильтрация выполняется на каждой странице нумерации страниц.

Пример - Всего записей - 100 записей на странице = 10, если первая страница содержит 3 человека, а вторая страница содержит 7 человек с именем SAM, тогда на первой странице будут показаны 3 человека, а на второй - 7 человек.

ниже мой код.

<table>
     <tr ng-repeat="show in showdata | filter:namefilter.entity | pagination: curPage * pageSize | limitTo: pageSize "* >
         <td> {{show.name}}</td>
         <td> {{show.age}}</td>
     </tr>
</table>
 <div class="pagination pagination-centered" ng-show="showdata.length">
     <ul  class="pagination-controle pagination">
          <li>
             <button type="button" class="btn btn-primary"  ng-disabled="curPage == 0" ng-click="curPage=curPage-1"> &lt;PREV</button>
          </li>
          <li>
             <span>Page {{curPage + 1}} of {{ numberOfPages() }}</span>
          </li>
          <li>
             <button type="button"   class="btn btn-primary" ng-disabled="curPage >= showdata.length/pageSize - 1" ng-click="curPage = curPage+1">NEXT&gt; </button>
           </li>
     </ul>
 </div>

Угловой код

$scope.curPage = 0;
$scope.pageSize = 13;
$scope.numberOfPages = function()
{
    return Math.ceil($scope.showdata.length / $scope.pageSize);
};

Report.filter('pagination', function()
{
    return function(input, start)
    {
        start = +start;
        return input.slice(start);
    };
});

Report.filter('search', function() {
    return function(items, keyword) {
        /* if no keyword is entered, just display all the items*/
        if (!keyword) {
           return items;
        }
        else {
            var newItems = [];
            var keyword = keyword.toLowerCase();
            /*create new set of items where 'keyword' exists in object data*/
            for (var i in items) {
                if (i.entity.toLowerCase().indexOf(keyword) > -1 )
                 { newItems.push(i); }
                              }
                            }
             }
             $scope.numberOfPages = function()
          {


        return newItems;
     });

Я хочу, чтобы после того, как номер фильтра также сбрасывался.Любое руководство будет полезно.

1 Ответ

0 голосов
/ 27 февраля 2019

Я выполнил пагинацию в мобильном приложении Ionic, которое использует Angular под обложками ...

В моей версии я передал номер страницы и количество записей на страницу в качестве параметров в веб-сервисе RESTFIL.Я также вернул ключи следующей записи, и до того, как веб-сервису было легко перейти на следующую / предыдущую страницу.Поэтому каждый раз я имею дело со свежим набором на странице.Все тяжелые опции и опции фильтрации были выполнены на стороне сервера, чтобы не отсылать назад огромную полезную нагрузку и фильтровать на стороне клиента.

...