vue elementui 分页的实现
实现 Vue ElementUI 分页功能
安装 ElementUI
确保项目中已安装 ElementUI。若未安装,可通过以下命令安装:
npm install element-ui -S
在 main.js 中引入 ElementUI 并注册:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
基础分页组件
在 Vue 组件中使用 <el-pagination> 实现基础分页:
<template>
<div>
<el-pagination
:current-page="currentPage"
:page-size="pageSize"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
/>
</div>
</template>
<script>
export default {
data() {
return {
currentPage: 1,
pageSize: 10,
total: 100
};
},
methods: {
handleCurrentChange(val) {
this.currentPage = val;
this.fetchData();
},
handleSizeChange(val) {
this.pageSize = val;
this.fetchData();
},
fetchData() {
// 模拟 API 请求
console.log(`请求页码: ${this.currentPage}, 每页条数: ${this.pageSize}`);
}
}
};
</script>
分页与表格联动
通常分页与表格数据结合使用:

<template>
<div>
<el-table :data="tableData" border>
<el-table-column prop="date" label="日期"></el-table-column>
<el-table-column prop="name" label="姓名"></el-table-column>
</el-table>
<el-pagination
:current-page="currentPage"
:page-size="pageSize"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
/>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [],
currentPage: 1,
pageSize: 10,
total: 0
};
},
created() {
this.fetchData();
},
methods: {
fetchData() {
// 模拟 API 请求
const mockData = [];
for (let i = 0; i < this.pageSize; i++) {
mockData.push({
date: `2023-01-${this.currentPage}`,
name: `用户 ${(this.currentPage - 1) * this.pageSize + i + 1}`
});
}
this.tableData = mockData;
this.total = 100; // 模拟总数据量
},
handleCurrentChange(val) {
this.currentPage = val;
this.fetchData();
},
handleSizeChange(val) {
this.pageSize = val;
this.fetchData();
}
}
};
</script>
后端分页对接
实际项目中需与后端 API 对接:
methods: {
async fetchData() {
try {
const res = await axios.get('/api/data', {
params: {
page: this.currentPage,
size: this.pageSize
}
});
this.tableData = res.data.list;
this.total = res.data.total;
} catch (error) {
console.error(error);
}
}
}
自定义分页样式
通过 layout 属性自定义分页组件显示内容:
<el-pagination
layout="prev, pager, next"
:total="50">
</el-pagination>
分页属性说明
current-page: 当前页码(需.sync修饰符或手动更新)page-size: 每页显示条目数total: 总条目数page-sizes: 每页显示个数选择器的选项(如[10, 20, 30])layout: 组件布局(可选值包括total/sizes/prev/pager/next/jumper)






