vue的element实现分页
使用 Element UI 实现分页
Element UI 提供了 el-pagination 组件,可以方便地实现分页功能。以下是一个完整的分页实现示例,包括前端和后端交互。
安装 Element UI
确保项目中已安装 Element UI。如果未安装,可以通过以下命令安装:

npm install element-ui
引入 Element UI
在 main.js 中全局引入 Element UI:
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-table :data="tableData" border style="width: 100%">
<el-table-column prop="id" label="ID" width="180"></el-table-column>
<el-table-column prop="name" label="Name" width="180"></el-table-column>
<el-table-column prop="address" label="Address"></el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [],
currentPage: 1,
pageSize: 10,
total: 0
};
},
created() {
this.fetchData();
},
methods: {
fetchData() {
// 模拟 API 请求
const params = {
page: this.currentPage,
size: this.pageSize
};
// 实际项目中替换为真实的 API 调用
this.$axios.get('/api/data', { params }).then(response => {
this.tableData = response.data.list;
this.total = response.data.total;
});
},
handleSizeChange(val) {
this.pageSize = val;
this.fetchData();
},
handleCurrentChange(val) {
this.currentPage = val;
this.fetchData();
}
}
};
</script>
后端 API 实现
后端需要根据前端传递的 page 和 size 参数返回分页数据。以下是一个简单的 Node.js Express 示例:
const express = require('express');
const app = express();
app.get('/api/data', (req, res) => {
const { page = 1, size = 10 } = req.query;
const offset = (page - 1) * size;
// 模拟数据库查询
const total = 100; // 总数据量
const list = Array.from({ length: size }, (_, i) => ({
id: offset + i + 1,
name: `Item ${offset + i + 1}`,
address: `Address ${offset + i + 1}`
}));
res.json({
list,
total
});
});
app.listen(3000, () => console.log('Server running on port 3000'));
分页属性说明
el-pagination 组件支持以下常用属性:
current-page:当前页码,支持.sync修饰符。page-size:每页显示条目数。total:总条目数。page-sizes:每页显示个数选择器的选项设置。layout:组件布局,子组件名用逗号分隔。
事件说明
size-change:每页条数改变时触发。current-change:当前页改变时触发。
通过以上步骤,可以快速在 Vue 项目中实现分页功能。






