@dmitry2000

Как подружить пагинацию и фильтрацию?

Есть метод пагинации:
getPages() {
            let elemsOnPage = 5;
            if (elemsOnPage !== 0) {
                let pagesArr = [];
                let pageNum = Math.ceil(this.tableList.length / elemsOnPage);

                for (let j = 0; j < pageNum; j++) {
                    this.pageNum.push(j);
                }

                for (let i = 0; i < pageNum; i++) {
                    pagesArr.push(this.tableList.slice(i * elemsOnPage, (i + 1) * elemsOnPage));
                }
                this.filteredPages = cloneDeep(pagesArr);
            }
        },

В таблице вывожу так:
<tr v-for="tableItem in filteredPages[activePage]" :key="tableItem.id"></tr>

Но есть и computed, который фильтрует:
filteredTableList() {
            return this.tableList
                .filter(el => {
                    if (!this.commitModelForSort) {
                        return true;
                    }
                    return el.commit === this.commitModelForSort;
                })
                .filter(el => {
                    if (!this.rotationModelForSort) {
                        return true;
                    }
                    return el.rotationName === this.rotationModelForSort;
                })
                .filter(el => {
                    if (!this.roleModelForSort) {
                        return true;
                    }
                    return el.role === this.roleModelForSort;
                });
        }

Как совместить пагинацию вместе с фильтрацией?
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
Aetae
@Aetae Куратор тега Vue.js
Тлен
В getPages замени все this.tableList на this.filteredTableList. В чём проблем?)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы