vue2版本elementUI的table分页实现多选逻辑

1. 需求

我们需要在表格页上实现多选要求,该表格支持分页逻辑。

2. 认识属性

表格属性

参数说明类型可选值默认值
data显示的数据array
row-key行数据的 Key,用来优化 Table 的渲染;在使用 reserve-selection 功能与显示树形数据时,该属性是必填的。类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function。Function(row)/String

表格事件

事件名说明参数
selection-change当选择项发生变化时会触发该事件selection

表格方法

方法名说明参数
clearSelection用于多选表格,清空用户的选择
toggleRowSelection用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)row, selected
toggleAllSelection用于多选表格,切换所有行的选中状态-

表格列属性

参数说明类型可选值默认值
type对应列的类型。如果设置了 selection 则显示多选框;如果设置了 index 则显示该行的索引(从 1 开始计算);如果设置了 expand 则显示为一个可展开的按钮stringselection/index/expand
selectable仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选Function(row, index)
reserve-selection仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key)Booleanfalse

3. 具体代码

<template>
<div><el-tablev-if="tableVisible"ref="multipleTable":data="tableData"tooltip-effect="dark"style="width: 100%"row-key="id"@selection-change="handleSelectionChange"><el-table-column:reserve-selection="true":selectable="judgeSelectable"type="selection"width="55"></el-table-column><el-table-columnlabel="id"width="120"><template slot-scope="scope">{{ scope.row.date }}</template></el-table-column><el-table-columnprop="name"label="姓名"width="120"></el-table-column></el-table><el-pagination:current-page="pageNum":page-sizes="[10, 20, 50, 100]":page-size="pageSize"layout="total,  prev, pager, next, sizes, jumper":total="total"@size-change="handleSizeChange"@current-change="handleCurrentChange"/>
</div>
</template>
  export default {data() {return {tableData: [{id: 1,name: '王小虎1'}, {id: 2,name: '王小虎2'}, {id: 3,name: '王小虎3'}, {id: 4,name: '王小虎4'}, {id: 5,name: '王小虎5'}, {id: 6,name: '王小虎6'}, {id: 7,name: '王小虎7'}],multipleSelection: [],total: 0,pageSize: 10,pageNum: 1,tableVisible: true}},created() {this.initData();},methods: {initData() {this.getList();this.getSelectedList();},getSelectedList() {//	当拿到已选列表时,调用toggleSelection传入已选列表},judgeSelectable(row, index) {// 用来区分是否可选return Math.random() > 0.5;},toggleSelection(rows) {if (rows) {rows.forEach(row => {this.$refs.multipleTable.toggleRowSelection(row);});} else {this.$refs.multipleTable.clearSelection();}},handleSelectionChange(val) {this.multipleSelection = val;},getList() {//	获取数据,更新tableData和total},//  分页size变化handleSizeChange(val) {this.pageSize = val;this.getList();},//  当前页面变化handleCurrentChange(val) {this.pageNum = val;this.getList();},//	必须这么处理toggleSelection(rows) {if (rows) {rows.forEach(row => {this.$refs.multipleTable.toggleRowSelection(row);});} else {this.$refs.multipleTable.clearSelection();}},//	批量导入或者其他场景下已选数据已更新,就重新处理下页面内容regetData() {this.total = 0;this.pageNum = 1;this.tableData = [];this.multipleSelection = [];this.tableVisible = false;this.$nextTick(() => {this.tableVisible = true;this.initData();})}}}

4. 解读

分页不需要介绍,主要还是多选说一点。

  1. 表格上必须设置row-key,该字段的值不可重复,这样让表格记住每个数据。
  2. selection-change字段用来监听选择变化,因el-table未提供批量选中方法,故只能调组件上的toggleRowSelection方法一个一个选中。如果需要监听selection-change方法变更记录,最好还是防抖处理,避免初始化一个一个选中导致的数据异常。
  3. el-table-column 使用 type 值为 selection, 该组件上需要设置 reserve-selectiontrue,相关属性解说请看2中解释。属性selectable 则是用来控制是否可选,这个业务功能也要了解下。
  4. 至于具体逻辑可以参考上面代码,有问题来找我。
求关注
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25366.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专业的UML开发工具StarUML

专业的UML开发工具StarUML 可靠的软件建模软件StarUML StarUML 是一款支持统一建模语言 (UML)框架的开源建模软件。它提供了几种类型的图表&#xff0c;并允许用户生成多种语言的代码。在它的帮助下&#xff0c;软件开发人员可以创建设计、概念和编码解决方案。但是&#xff0…

wav格式的音频压缩,WAV 转 MP3 VBR 体积缩减比为 13.5%、多个 MP3 格式音频合并为一个、文件夹存在则删除重建,不存在则直接建立

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 问题一&#xff1a;wav格式的音频压缩为哪些格式&#xff0c;网络传输给用户播放…

利用node.js搭配express框架写后端接口(一)

Node.js 凭借其高效的非阻塞 I/O 操作、事件驱动架构以及轻量级的特点&#xff0c;成为了开发高性能服务器应用的热门选择。Express 框架作为 Node.js 上最流行的 Web 应用框架之一&#xff0c;以其简洁的 API 和丰富的中间件生态系统&#xff0c;极大地简化了 Web 后端开发流程…

黑马Java面试教程_P5_微服务

系列博客目录 文章目录 系列博客目录1.引言2.Spring Cloud2.1 Spring Cloud 5大组件有哪些?面试文稿 2.2 服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?面试文稿 2.3 我看你之前也用过nacos、你能说下nacos与eureka的区别?面试文稿 2.4 你们项目负载均衡如…

深入了解 Python 中的 MRO(方法解析顺序)

文章目录 深入了解 Python 中的 MRO&#xff08;方法解析顺序&#xff09;什么是 MRO&#xff1f;如何计算 MRO&#xff1f;C3 算法的合并规则C3 算法的合并步骤示例&#xff1a;合并过程解析 MRO 解析失败的场景使用 mro() 方法查看 MRO示例 1&#xff1a;基本用法 菱形继承与…

信息系统的安全防护

文章目录 引言**1. 物理安全****2. 网络安全****3. 数据安全****4. 身份认证与访问控制****5. 应用安全****6. 日志与监控****7. 人员与管理制度****8. 其他安全措施****9. 安全防护框架**引言 从技术、管理和人员三个方面综合考虑,构建多层次、多维度的安全防护体系。 信息…

Tailwind CSS 4【实用教程】

官网 https://tailwindcss.com/docs/installation/using-vite Tailwind CSS 是一个实用优先的 CSS 框架 特色 原子化样式类名可深度定制主题插件丰富 安装配置导入 vite 中 pnpm add tailwindcss tailwindcss/vitevite.config.ts 中配置 import tailwindcss from tailwindcs…

ChatGPT 提示词框架

作为一个资深安卓开发工程师&#xff0c;我们在日常开发中经常会用到 ChatGPT 来提升开发效率&#xff0c;比如代码优化、bug 排查、生成单元测试等。 但要想真正发挥 ChatGPT 的潜力&#xff0c;我们需要掌握一些提示词&#xff08;Prompt&#xff09;的编写技巧&#xff0c;并…

毕业项目推荐:基于yolov8/yolo11的苹果叶片病害检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

【Python 入门基础】—— 人工智能“超级引擎”,AI界的“瑞士军刀”,

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…

VM虚拟机安装与配置Ubuntu Linux操作系统详细教程~

一、下载VM虚拟机 VMware16.0.zip百度网盘下载链接:https://pan.baidu.com/s/1-l-CcAVNINqhRLSiQ26R7w?pwd=tznn 提取码: tznn 二、软件介绍 VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,通过它可在一台电脑上同…

LabVIEW同步数据采集功能

VI通过使用数据采集&#xff08;DAQ&#xff09;硬件系统&#xff0c;进行多通道同步采集&#xff0c;实时获取模拟信号数据。它利用外部时钟信号触发数据采集&#xff0c;支持连续采样模式&#xff0c;并将采集到的数据实时显示在波形图上&#xff0c;方便用户进行数据监控和分…

释放 Cursor 的全部潜能:快速生成智能 Cursor Rules

释放 Cursor 的全部潜能&#xff1a;使用 PromptCoder 从 package.json 快速生成智能 Cursor Rules 我们将深入探讨如何利用您项目中的 package.json 文件&#xff0c;轻松生成 Cursor Rules&#xff0c;并通过 PromptCoder 这个强大的工具&#xff0c;快速创建高质量的 curso…

基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南

基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南 基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南 基于LangChain4j调用火山引擎DeepSeek R1搭建RAG知识库实战指南一、注册火山引擎账号二、RAG技术核心原理三、环境与工具准备1. 核心组件2. 依赖配…

虚拟仿真无线路由器5G和2.4G发射信号辐射对比(虚拟仿真得出最小安全距离,与国际标准要求一致)

1、前言 有人说&#xff0c;只要有电磁波的地方就有辐射。5G和2.4G信号辐射强度是多少&#xff1f;是否会对人体构成危害&#xff1f;无线路由器的2.4GHz频段&#xff0c;频率范围&#xff1a;2.4 GHz 至 2.4835 GHz&#xff0c;信道宽度&#xff1a;通常为20 MHz&#xff0c;…

苍穹外卖-阿里云OSS文件上传

苍穹外卖-阿里云OSS文件上传 一、阿里云OSS简介**获取AccessKey**获取enpoint 二、代码实现1 引入依赖2 定义OSS相关配置2.1 application-dev.yml2.2 application.yml 3 读取OSS配置3.1 AliOssProperties 4 生成OSS工具类对象4.1 AliOssUtil4.2 OssConfiguration2.5 CommonCont…

一劳永逸解决vsocde模块import引用问题

这里写目录标题 原因解决方案 原因解决方案 原因&#xff1a; VSCode中需要显式地声明PYTHONPATH&#xff0c;不然根本找不到本项目内的模块和包的路径。 解决方法&#xff0c;加入到setting。json里当前Project路径&#xff0c;以后运行就自动添加了&#xff1a; 打开设置 …

Xlua 编译 Windows、UWP、Android、iOS 平台支持库

Xlua 编译 Windows、UWP、Android、iOS 平台支持库 Windows&#xff1a; 安装 Visual Studio&#xff08;推荐 2017 或更高版本&#xff09; 安装 CMake&#xff08;https://cmake.org/&#xff09; macOS&#xff1a; 安装 Xcode 和命令行工具 安装 CMake 检查 cmake 是否安…

JWT使用教程

目录 JWT (JSON Web Token)1. JWT简介(1) 什么是JWT(2) JWT有什么用(3) JWT认证方式 2. JWT的组成部分3. 签名的目的4. JWT与Token的区别5 JWT的优势6 JJWT签发与验证token(1) 引入依赖(2) 创建 Token(3) 解析Token(4) 设置过期时间(5) 自定义claims 7. JWT自定义工具类 JWT (J…

如何使用Docker搭建哪吒监控面板程序

哪吒监控(Nezha Monitoring)是一款自托管、轻量级的服务器和网站监控及运维工具,旨在为用户提供实时性能监控、故障告警及自动化运维能力。 文档地址:https://nezha.wiki/ 本章教程,使用Docker方式安装哪吒监控面板,在此之前,你需要提前安装好Docker. 我当前使用的操作系…