Как разбить результат на страницы с помощью AngularJS, но фильтровать по полному списку?

Примеры и ссылки из раздела Как выполнять разбиение по страницам в AngularJS? показывают систему разбиения на страницы, где фильтрация/упорядочивание применяются только к текущей странице.

Например, сортировка по id на 1-й странице этой скрипки переключит:

  • между: 1, 10, 11, 12, 13 ;
  • и это: 13, 12, 11, 10, 1.

Хотя кто-то может ожидать получить:

  • 1, 2, 3, 4, 5 (так как эти значения представлены на следующих страницах).

Вопрос

Как кто-то фильтрует/упорядочивает затем разбивает на страницы вместо разбивки на страницы, а затем фильтрует список?


person Édouard Lopez    schedule 09.03.2014    source источник
comment
Вас также беспокоит алгоритм сортировки или только сортировка по всему набору? Если мы применим один и тот же алгоритм сортировки ко всему набору, ожидаемые значения будут 1, 10, 11, 12, 13   -  person Gil Birman    schedule 09.03.2014


Ответы (1)


1) Прекратить сортировку постраничных результатов

До:

<tr ng-repeat="item in pagedItems[currentPage] | orderBy:sortingOrder:reverse">

После:

<tr ng-repeat="item in pagedItems[currentPage]">

2) Введите $filter и отсортируйте по всему набору

$filter('orderBy')($scope.items, $scope.sortingOrder, $scope.reverse);

... Вот модифицированная вилка вашей скрипки

person Gil Birman    schedule 09.03.2014
comment
Спасибо, это то, что я наконец сделал. однако сортировка идет медленно, мне нужно будет обновить свой вопрос, чтобы дать более подробную информацию. - person Édouard Lopez; 09.03.2014
comment
Я обновил ссылку в своем ответе, и теперь она немного быстрее. - person Gil Birman; 09.03.2014