Сохраните отфильтрованный список перед применением другого фильтра с помощью ng-repeat

0

У меня есть список под названием ListA. Я выполняю несколько фильтров и сохраняю в новом массиве с именем filteredList.

<div ng-repeat="element in filteredList =(ListA| filter: {label:searchCategory.value} |filter:searchString)">

СЕЙЧАС, я хочу использовать filteredList для реализации разбивки на страницы. Я уже выполнил разбивку на страницы для другой страницы, используя splice(start, end) где я обновляю start и end значения для обновления видимого массива. Добавление сплайсинга к фильтру изменит мой размер filteredList, который мне нужен, чтобы рассчитать количество страниц для разбивки на страницы.

То, что мне нужно будет в ng-repeat было бы чем-то вроде этого

ng-repeat="element in newList.splice(start, end)" where 'newList' without splice is essentially 'filteredList'.
Теги:
arrays
pagination
angularjs-ng-repeat
ng-repeat

1 ответ

1
Лучший ответ

В этом случае вам нужно будет фильтровать список в самом Javascript.

Для вашего сценария

В вашем контроллере:

var ListA = [<some-data>];

$scope.filteredList = $filter('filter')(ListA, searchString );
$scope.filteredList = $filter('filter')($scope.filteredList, {label:searchCategory.value} );

Вы должны использовать значения фильтра при щелчке какого-либо события и пересчитать этот filterList в обработчике.

Если элементы меньше 200, вы можете реализовать прямую фильтрацию, реализуя наблюдателя в выражениях фильтра.

  • 0
    Отлично! Я поместил это в функцию и вызвал изменение модели. Незначительные изменения, хотя. Я обновил ответ. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню