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>

相关推荐
cz追天之路6 分钟前
华为机考 ------ 计算某字符出现次数
前端·javascript·华为机考
毕设源码-朱学姐12 分钟前
【开题答辩全过程】以 基于Web酒店管理的设计与实现为例,包含答辩的问题和答案
前端
talenteddriver28 分钟前
Java Web:http请求在springboot项目中的传递层级(自用笔记)
java·前端·spring boot·http
咘噜biu34 分钟前
Java后端和前端的接口数据加密方案(椭圆曲线集成加密方案)
java·前端·安全·aes·密钥协商ecdh·椭圆曲线集成加密方案
CodeSheep38 分钟前
百度又一知名产品,倒下了!
前端·后端·程序员
阿芯爱编程39 分钟前
前端面试题linux操作
前端·面试
Bug.ink1 小时前
BUUCTF——WEB(4)
前端·网络安全·靶场·ctf·buuctf
L Jiawen1 小时前
【Web】RESTful风格
前端·后端·restful
爱编码的傅同学1 小时前
【单例模式】深入理解懒汉与饿汉模式
java·javascript·单例模式
momo(激进版)1 小时前
前端打包时自动更新版本号
前端