В этом примере есть три уровня данных:
- Нефильтрованный набор данных;
- Набор данных, который был отфильтрован по вашему поисковому запросу (при условии, что используется поисковый термин, в противном случае он будет равен нефильтрованному набору данных); и
- Разбитые на страницы данные, которые вы хотите разбить на пакеты по десять записей в каждом.
Это предполагает, что вы должны использовать четыре переменные:
const data
: массив объектов с хотя бы одним свойством, tool_name
let filteredData
: подмножество вышеупомянутых, отфильтрованных так, что tool_name.toLowerCase() === search.toLowerCase()
let currentPageData
: подмножество отфильтрованных данных, где индекс элементов соответствует текущей странице, то есть страница 1 = записи с индексом 0-9, страница 2 = записи с индексом 10-19 и т. Д.
let currentPage: number
переменная, в которой хранится текущая страница.
При начальной загрузке страницы вы хотите инициализировать currentPage равным 1. Следовательно, логика заполнения таблицы:
<el-table
:data="currentPageData"
border
fit
highlight-current-row>
<!-- table content -->
</el-table>
Где
filteredData = !search ? data : data.filter((entry) => entry.tool_name.toLowerCase() === search.toLowerCase())
currentPageData = filteredData.filter((entry, index) => (index < (currentPage * 10) - 1 && index > ((currentPage - 1) * 10)))
т.е. если есть поиск, ваши отфильтрованные данные фильтруются в соответствии с ним, в противном случае FilterData просто устанавливается на данные. Затем currentPageData использует переменную currentPage для извлечения десяти записей, соответствующих текущей выбранной странице. Я предполагаю, что вы можете справиться с тем, как добавить кнопки в таблицу для выбора разных страниц.
Очевидно, что это не полностью рабочее решение, но должно дать представление о том, как его реализовать.