当前位置: 首页 > news >正文

Vue 利用el-table和el-pagination组件,简简单单实现表格前端分页

个别业务场景,需求前端实现分页,处理一些特殊数据和交互,来满足不同的业务的条件,今天抽空写了个demo,效果如下:

代码:

<template><div class="paging"><div class="box_body"><el-table :data="tableData" border size="small" style="width: 100%"><el-table-columnlabel="序号"prop="num"min-width="150"></el-table-column><el-table-columnlabel="姓名"prop="name"min-width="150"></el-table-column><el-table-columnlabel="性别"prop="sex"min-width="150"></el-table-column><el-table-columnlabel="年龄"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>

有同学要用el-table组件做前端分页的可以直接复制粘贴拿去使用,动手能力强的同学可以再我这个基础上再次二次封装成组件去使用,方便随时调用。

http://www.dtcms.com/a/325964.html

相关文章:

  • 【数据库】如何使用一款轻量级数据库SqlSugar进行批量更新,以及查看最终的Sql操作语句
  • QT_QUICK_BACKEND 环境变量详解(AI生成)
  • Linux中配置DNS
  • 在 Rocky Linux 9.2 上使用 dnf 安装 Docker 全流程详解
  • 高并发场景下抢单业务解决方案实现(乐观锁 + 分布式锁)
  • Python洛谷做题31:P5726 【深基4.习9】打分
  • A2O MAY确认发行新曲《B.B.B (Bigger Badder Better)》 8月13日强势回归!
  • window显示驱动开发—多平面覆盖硬件要求
  • 深度解析三大HTTP客户端(Fetch API、Axios 和 Alova)——优劣与选择策略
  • JavaScript let的使用
  • 【网络运维】Linux:常见 Web 服务器
  • Vuex和Pina的区别
  • 利用coze搭建智能体和应用的区别
  • SQL复杂查询
  • ListNode* dummy = new ListNode();什么意思
  • 视觉相机偏移补偿
  • 5G NR 非地面网络 (NTN) 5G、太空和统一网络
  • 5G NR 非地面网络 (NTN)
  • 【接口自动化测试】---自动化框架pytest
  • 《事务隔离级别与 MVCC 机制深度剖析》
  • 直流电机双闭环控制系统,转速电流双闭环调速【simulink仿真】
  • 软件开发 - danger 与 dangerous、warn 与 warning
  • 【秋招笔试】2025.08.10-大疆秋招笔试题-第一题
  • 【前端基础】15、列表元素、表格元素、表单元素(注:极其粗略的记载。)
  • 稠密检索:基于神经嵌入的高效语义搜索范式
  • 新产品、新视觉、新官网,同元软控官网正式上线啦
  • LAZADA跨境电商自养号测评环境搭建:安全与合规的底层逻辑解析
  • 【已解决】报错:WARNING: pip is configured with locations that require TLS/SSL
  • HTTPS 协议原理 ——4种方案
  • 5G NTN 卫星测试产品