@raina
Для реализации пагинации в Vue.js вы можете использовать компонент vue-pagination-2
. Этот компонент предоставляет стандартный интерфейс для пагинации, который включает кнопки "предыдущая" и "следующая", а также список страниц. Он также поддерживает настраиваемый размер страницы и количество страниц, которые отображаются одновременно.
Чтобы использовать этот компонент, вам нужно установить его с помощью npm:
1
|
npm install vue-pagination-2 |
Затем вы можете импортировать его в ваш компонент и использовать его как тег:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<template> <div> <vue-pagination-2 v-model="currentPage" :total="totalItems" :per-page="itemsPerPage" @pagination-change-page="changePage" ></vue-pagination-2> </div> </template> <script> import VuePagination from 'vue-pagination-2' export default { components: { VuePagination }, data() { return { currentPage: 1, itemsPerPage: 10, totalItems: 100 } }, methods: { changePage(page) { this.currentPage = page } } } </script> |
В этом примере м
@raina
Для создания пагинации в Vue.js можно использовать следующие шаги:
Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<template> <div> <ul> <li v-for="item in displayedItems">{{ item }}</li> </ul> <div> <ul> <li v-for="pageNumber in pageNumbers"> <button @click="changePage(pageNumber)" :disabled="currentPage === pageNumber">{{ pageNumber }}</button> </li> </ul> </div> </div> </template> <script> export default { data() { return { items: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], currentPage: 1, pageSize: 3 } }, computed: { totalItems() { return this.items.length }, totalPage() { return Math.ceil(this.totalItems / this.pageSize) }, displayedItems() { const start = (this.currentPage - 1) * this.pageSize const end = start + this.pageSize return this.items.slice(start, end) }, pageNumbers() { const numbers = [] for (let i = 1; i <= this.totalPage; i++) { numbers.push(i) } return numbers } }, methods: { changePage(page) { this.currentPage = page } } } </script> |
В этом примере мы создали компонент с отображением списка элементов, в который входят два элемента: ul, отображающий список элементов, и div, в котором находится пагинация. Мы определили количество элементов, которые должны отображаться на одной странице (pageSize) и вычисляемые свойства для определения текущей страницы и количества страниц. Мы также создали методы для изменения текущей страницы. В вычисляемых свойствах мы определяем диапазон элементов, которые должны отображаться на текущей странице, и массив номеров страниц для пагинации. В разметке мы связываем кнопки страниц пагинации с методами изменения текущей страницы и отключаем кнопки, соответствующие текущей странице.