el‐pagination - daniel-qa/Vue GitHub Wiki
- 初始化流程
頁面進來就一次取得所有資料
設定到 allData
呼叫 updatePagedData() 顯示第 1 頁
- 心法總結(適用前端分頁)
資料不變,只改切的位置 → 效能好、操作快
元件綁定要乾淨:el-table 綁 pagedData,el-pagination 綁 currentPage & pageSize
當然也可做搜尋或篩選後再分頁,動態分頁照樣 work 🎯
<template>
<div>
<el-table :data="pagedData" style="width: 100%">
<el-table-column prop="name" label="姓名" />
<el-table-column prop="age" label="年齡" />
</el-table>
<el-pagination
v-model:current-page="currentPage"
v-model:page-size="pageSize"
:total="tableData.length"
:page-sizes="[5, 10, 20]"
layout="total, sizes, prev, pager, next, jumper"
style="margin-top: 20px; text-align: right;"
/>
</div>
</template>
<script setup>
import { ref, computed } from 'vue'
const tableData = ref([
{ name: '小明', age: 18 },
{ name: '小華', age: 22 },
{ name: '小美', age: 20 },
{ name: '小強', age: 25 },
{ name: '小艾', age: 19 },
{ name: '小豪', age: 23 },
{ name: '小柔', age: 21 },
{ name: '小杰', age: 24 },
])
const currentPage = ref(1)
const pageSize = ref(5)
const pagedData = computed(() => {
const start = (currentPage.value - 1) * pageSize.value
const end = start + pageSize.value
return tableData.value.slice(start, end)
})
</script>