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

【已解决】el-table 前端分页多选、跨页全选等

由于element-ui的自定义header一直不生效(当type未selection时slot / rende-header 都不生效),所以还是使用element-ui原生API去做。

示例

代码

el-tablerow-key属性是必要的。

<template><div><el-tableref="table":data="tableDataFilter"style="width:100%"row-key="id"height="500"@select="handleSelect"@select-all="handleSelectAll"><el-table-columntype="selection"width="55"></el-table-column><el-table-columntype="index"width="50"label="序号"/><el-table-columnprop="name"label="姓名"width="120"/><el-table-columnprop="age"label="年龄"width="80"sortable/><el-table-columnprop="email"label="邮箱"min-width="180"/><el-table-columnprop="city"label="城市"width="100"/><el-table-columnprop="occupation"label="职业"width="150"/><el-table-columnprop="joinDate"label="加入日期"width="120"/></el-table><el-pagination:current-page.sync="currentPage":page-sizes="[10, 20, 50]":page-size.sync="pageSize"layout="total, sizes, prev, pager, next, jumper":total="total"@size-change="handleSizeChange"@current-change="handleCurrentChange"></el-pagination></div></template><script>exportdefault{data(){return{// 存放完整数据tableData:[],multipleSelection:[],currentPage:1,pageSize:10,/* 选择Set 是因为在这个场景使用起来比较方便,也能优化些许性能。 如果需要使用watch来监听selectedIds 的变化,可以改用为数组。 如改用数组 select等方法中的判断就需要相对繁琐。 或是对Set 进行包装。 */selectedIds:newSet(),isSelectAll:false};},computed:{total(){returnthis.tableData.length},// 前端分页tableDataFilter(){consts=(this.currentPage-1)*this.pageSize,e=s+this.pageSizereturnthis.tableData.slice(s,e)}},// 默认全选;如果有需要;此代码可以放在接口调用数据赋值后asyncmounted(){awaitthis.$nextTick()this.handleSelectAll()},methods:{// 当勾选状态改变做后续的逻辑处理change(){// 已选中列表constselectList=this.tableData.filter(x=>this.selectedIds.has(x.id))// do something...},// 勾选/取消单行handleSelect(selection,row){if(this.selectedIds.has(row.id)){this.selectedIds.delete(row.id)}else{this.selectedIds.add(row.id)}this.checkStatus()// 因为 Set 数据结构 不能够被Vue所监听到// 所以在每次修改选中状态之后手动调用一次callbackthis.change()},checkStatus(){this.isSelectAll=this.selectedIds.size===this.total},// 全选事件handleSelectAll(){// 当前是全选状态 -> 全部取消if(this.isSelectAll){this.selectedIds.clear()this.$refs.table?.clearSelection?.()}else{this.tableData.forEach(x=>{this.selectedIds.add(x.id)// ?. 在每次调用接口会清楚选中状态;防止在created中调用接口时table dom还未挂载。this.$refs.table?.toggleRowSelection?.(x,true)})}this.checkStatus()this.change()},handleSizeChange(){this.setSelection()},handleCurrentChange(){this.setSelection()},// 分页切换 -> 处理当前页面勾选状态asyncsetSelection(){awaitthis.$nextTick()consttableRef=this.$refs.tableif(!tableRef)returnthis.tableData.forEach(x=>{tableRef.toggleRowSelection(x,this.selectedIds.has(x.id))})},},};</script>
http://www.cnnetsun.cn/news/130994.html

相关文章:

  • Frigate智能监控终极指南:3步搞定go2rtc流媒体配置
  • 如何解决AMD显卡驱动臃肿问题
  • 【Agent互操作性突破】:定义未来AI生态的6大接口规范详解
  • MCP AI-102模型错误处理全流程(从监控到自动恢复的完整方案)
  • OpenModScan:工业自动化必备的免费Modbus主站调试工具完全指南
  • 量子 Agent 的多语言适配实战(API 跨语言调用全解析)
  • Kotaemon草药配方推荐:基于典籍知识库
  • 元数据自动化的终极突破:3步构建企业级数据治理体系
  • 如何用开源工具实现工业协议高效调试:OpenModScan核心功能深度解析
  • AI篮球分析系统:用机器学习重塑投篮训练的科学方法
  • 为什么顶尖IT团队都在连夜升级MCP MS-720 Agent?真相曝光,
  • 【国家级项目案例曝光】:政务Agent如何完成跨部门流程自动化协同
  • 【工业控制Agent实时响应】:揭秘毫秒级响应背后的5大核心技术
  • 交易Agent速度提升的8个关键指标:你忽略了第3个吗?
  • 2025年GEO优化领域横向评测:爱搜索人工智能位列第一
  • Vedbo v1.1.2 – 创意拖放式 Elementor WooCommerce 电商主题
  • 【量子计算Agent调度优化】:揭秘未来任务调度的核心算法与实战策略
  • 3步搞定智能QQ机器人:OneBot协议零门槛搭建指南
  • 阵列信号处理波束形成
  • 联想拯救者BIOS高级设置解锁:从入门到精通的完整指南
  • 终极指南:5分钟掌握Tidal音乐下载器完整使用技巧
  • 如何快速掌握vue-plugin-hiprint:Vue项目打印设计的终极解决方案
  • ReadCat开源小说阅读器:打造沉浸式数字阅读新体验
  • 物流智能调度进阶之路(量子Agent赋能路径优化实战)
  • 【医疗多模态Agent权重优化】:揭秘高效模型融合背后的黑科技
  • SD Maid SE安卓版(安卓系统清理器)
  • Zoner Photo Studio X(照片编辑管理)
  • 音频调试终极指南:ESP32嵌入式语音交互诊断工具
  • 过氧化氢泄漏后应急处置
  • Spring定时任务与Spring MVC拦截器