前端结合element-ui实现分页查询
时间: 2023-09-06 14:11:06 浏览: 172
vue + element-ui的分页问题实现
你可以使用 element-ui 中的 `el-pagination` 组件进行分页查询的实现。
首先,需要在页面中导入 `el-pagination` 组件和相关的样式文件:
```html
<template>
<div>
<!-- 分页列表 -->
<el-pagination
:page-size="pageSize"
:current-page="currentPage"
:total="total"
@current-change="handleCurrentChange"
layout="total, sizes, prev, pager, next, jumper"
/>
<!-- 表格内容 -->
<el-table
:data="tableData"
style="width: 100%"
>
<!-- 表头 -->
<el-table-column
prop="name"
label="姓名"
/>
<el-table-column
prop="age"
label="年龄"
/>
<el-table-column
prop="gender"
label="性别"
/>
</el-table>
</div>
</template>
<script>
import { reactive, watch } from 'vue'
import { ElTable, ElTableColumn, ElPagination } from 'element-plus'
import 'element-plus/lib/theme-chalk/index.css'
export default {
components: {
ElTable,
ElTableColumn,
ElPagination
},
setup() {
// 响应式数据
const state = reactive({
tableData: [], // 表格数据
total: 0, // 总记录数
currentPage: 1, // 当前页码
pageSize: 10 // 每页显示数量
})
// 监听分页数据变化
watch([() => state.currentPage, () => state.pageSize], ([currentPage, pageSize]) => {
// 根据当前页码和每页显示数量进行查询
fetchData(currentPage, pageSize)
})
// 查询数据方法
const fetchData = (page, size) => {
// 发送请求获取数据
// ...
// 更新响应式数据
state.tableData = [/* ... */]
state.total = 100 // 假设总记录数为100条
}
// 处理页码变化事件
const handleCurrentChange = (currentPage) => {
state.currentPage = currentPage
}
return {
...state,
fetchData,
handleCurrentChange
}
}
}
</script>
```
在上面的代码中,我们使用了 `reactive` 函数创建了一个响应式的 `state` 对象,其中包含了表格数据、总记录数、当前页码和每页显示数量等数据。在 `watch` 函数中监听了当前页码和每页显示数量的变化,并在变化时触发 `fetchData` 方法进行数据查询。
在模板中,我们使用了 `el-pagination` 组件和 `el-table` 组件来构建分页查询列表。在 `el-pagination` 组件中,我们通过绑定 `pageSize`、`currentPage` 和 `total` 等属性来实现分页功能,并通过 `layout` 属性来配置分页组件的显示方式。在 `el-table` 组件中,我们使用了 `prop` 和 `label` 属性来定义表格的列信息,并通过 `:data` 属性来绑定表格的数据源。
最后,在 `setup` 函数中,我们定义了 `fetchData` 方法和 `handleCurrentChange` 方法来处理数据查询和页码变化事件,并将这两个方法返回给模板。
阅读全文