Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页

Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页:

当table的数据量比较大的时候,一个屏幕展示不出全部的数据,这个时候就需要分页显示。而多数情况下都是做的后端分页,就是将分页参数和查询条件一并传到后端,后端将当前页要显示的数据返回来。但是有时候会遇到后端也是去调用了其它系统的接口,这时候返回到前端的是所有的数据,此时需要前端自行去进行分页显示。今天抽空写了个demo,效果如下:

有朋友要用el-table组件做前端分页的时候可以参考以下代码:

<template>

<div class="paging">

<div class="box_body">

<el-table :data="tableData" border size="small" style="width: 100%">

<el-table-column

label="序号"

prop="num"

min-width="150"

></el-table-column>

<el-table-column

label="姓名"

prop="name"

min-width="150"

></el-table-column>

<el-table-column

label="性别"

prop="sex"

min-width="150"

></el-table-column>

<el-table-column

label="年龄"

prop="age"

min-width="150"

></el-table-column>

</el-table>

<!--===分页=====-->

<el-pagination

:current-page="pageinfo.page"

:page-sizes="[10, 20, 30, 40]"

:page-size="pageinfo.size"

layout="total, sizes, prev, pager, next, jumper"

:total="pageinfo.total"

@size-change="handleSizeChange"

@current-change="handleCurrentChange"

style="margin-bottom: 3px"

></el-pagination>

</div>

</div>

</template>

<script>

export default {

name: "paging",

data() {

return {

// 从后端获取到的所有表格数据

sourceTableData: [],

// 页面要显示的表格数据

tableData: [],

// 分页信息

pageinfo: {

page: 1,

size: 10,

total: 0,

},

};

},

created() {

// 页面初始化时生成100条数据,模拟从后端获取所有数据

let arr = [];

for (let i = 0; i < 100; i++) {

let obj = {};

obj.num = i + 1;

obj.name = "name" + (i + 1);

obj.sex = Math.round(Math.random()) == 0 ? "男" : "女";

obj.age = 20 + Math.round(Math.random() * 30);

arr.push(obj);

}

this.sourceTableData = arr;

// 初始化算出第一页数据

this.tableData = this.currentChangePage(

this.pageinfo.size,

this.pageinfo.page

);

this.pageinfo.total = this.sourceTableData.length;

},

methods: {

/** 切换每页显示条数 */

handleSizeChange(val) {

this.pageinfo.page = 1;

this.pageinfo.size = val;

this.tableData = this.currentChangePage(val, this.pageinfo.page);

},

/** 切换分页 */

handleCurrentChange(val) {

this.pageinfo.page = val;

this.tableData = this.currentChangePage(this.pageinfo.size, val);

},

// 分页方法(用于表格数据后端不分页,放到前端做分页)

currentChangePage(size, current) {

const tablePush = [];

let array = JSON.parse(JSON.stringify(this.sourceTableData));

array.forEach((item, index) => {

if (size * (current - 1) <= index && index <= size * current - 1) {

tablePush.push(item);

}

});

return tablePush;

},

},

};

</script>

<style>

.paging {

width: 100%;

height: 100%;

}

.box_body {

width: 1200px;

margin: 50px auto;

}

</style>

相关推荐
季春二九15 分钟前
Edge 卸载工具 | 版本号1.0 | 专为彻底卸载Microsoft Edge设计
前端·microsoft·edge·edge 卸载工具
雨过天晴而后无语16 分钟前
HTML中JS监听输入框值的即时变化
前端·javascript·html
座山雕~18 分钟前
html 和css基础常用的标签和样式(2)-css
前端·css·html
一勺菠萝丶22 分钟前
为什么 HTTP 能访问,但 HTTPS 却打不开?——Nginx SSL 端口配置详解
前端
4Forsee31 分钟前
【Android】消息机制
android·java·前端
不爱说话郭德纲31 分钟前
UniappX不会运行到鸿蒙?超超超保姆级鸿蒙开发生成证书以及配置证书步骤
前端·uni-app·harmonyos
Olafur_zbj34 分钟前
【IC】NoC设计入门 -- 网络接口NI Slave
前端·javascript·php
IT_陈寒38 分钟前
React性能优化:10个90%开发者不知道的useEffect正确使用姿势
前端·人工智能·后端
赵小川42 分钟前
告别“切图仔”?我用一个神器,让Figma设计稿自动生成前端代码!
前端
Apifox42 分钟前
如何在 Apifox 中使用 OpenAPI 的 discriminator?
前端·后端·测试