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>

相关推荐
CCIE-Yasuo16 分钟前
网络安全-Javascript基础
javascript·安全·web安全
January12071 小时前
【AI方法笔记】2026-11-02:模型流式吐 JSON 时,前端会遇到四种崩法
前端·人工智能·笔记·json
asdzx671 小时前
C# 操作 PDF 元数据:从属性写入到字段提取的完整流程
前端·pdf·c#
幻境如梦丶皆为虚1 小时前
从零写一个 DSH 插件:在左侧菜单栏加一个「测试」
开发语言·javascript·ecmascript
吹什么轩1 小时前
constexpr 完全指南:从 const 的两种含义,到编译期计算的四次演进
java·前端·javascript
小蒜学长2 小时前
基于SpringBoot+Vue的云南地区扶贫助农系统的设计与实现(代码+数据库+LW)
java·vue.js·spring boot·后端·乡村振兴
Bruce_Liuxiaowei2 小时前
前端校验登录态,等于没校验——一次应急广播终端高危漏洞的发现与报送
运维·前端·安全
Meta Luo2 小时前
AI 时代,Web 自动化测试该怎么做?
前端·人工智能·playwright 替代工具·无代码自动化测试工具·低代码 ui 自动化测试·web 回归测试工具
去伪存真2 小时前
AI Agent 性能评估指标与自动化测试落地方案
前端·agent
MaAidan3 小时前
用 Agent 排查线上问题:SLS 日志分析 + DB/Redis 数据验证,一条链路搞清楚
前端·bootstrap·html