解决el-table组件中,分页后数据的勾选、回显问题?
问题描述:
1、记录一个弹窗点击确定按钮后,table列表所有勾选的数据信息2、再次打开弹窗,回显勾选所有保存的数据信息3、遇到的bug:切换分页,其他页面勾选的数据丢失;点击确认只保存当前页的数据;勾选数据保存后但并未回显......
解决方法:
<Modalv-model="showPersons" title="人员列表" <!-- 模态框的标题 -->@on-cancel="onClose3" <!-- 取消按钮的点击事件处理函数 -->width="40%" <!-- 模态框的宽度 -->:mask-closable="false" <!-- 是否可以通过点击遮罩层关闭模态框 -->
><Form :model="personsForm" :label-width="60" inline> <!-- 表单组件,绑定数据模型personsForm --><FormItem label="姓名:"> <!-- 表单项的标签 --><Input v-model.trim="personsForm.userName" clearable></Input> <!-- 输入框组件,绑定数据模型personsForm.userName,可清空输入内容 --></FormItem><div class="btns"> <!-- 按钮容器 --><Button @click="onReset1" style="margin-right: 8px">重 置</Button> <!-- 重置按钮,点击事件处理函数onReset1 --><Button type="primary" @click="userNameSearch">查 询</Button> <!-- 查询按钮,点击事件处理函数userNameSearch --></div></Form><el-tablev-if="showPersons" <!-- 控制表格的显示与隐藏 -->ref="personsTable" <!-- 表格的引用名 -->:data="personsList" <!-- 表格的数据源 -->style="margin-top: 16px" <!-- 表格的样式 -->row-key="user_id" <!-- 表格行的唯一标识符 -->@select="handleSelectionChange" <!-- 选择某一行时的事件处理函数handleSelectionChange -->@select-all="handleAllChange" <!-- 全选/取消全选时的事件处理函数handleAllChange -->><el-table-columntype="selection" <!-- 表格列的类型为选择列 -->width="45" <!-- 表格列的宽度 -->:reserve-selection="true" <!-- 保留之前的选择状态 -->align="center" <!-- 表格列的对齐方式为居中 -->fixed <!-- 表格列固定在左侧 -->/><el-table-column label="序号" width="55" fixed align="center"> <!-- 表格列的标签、宽度、对齐方式 --><template slot-scope="scope"> <!-- 自定义列模板 -->{{ scope.$index + 1 }} <!-- 显示行号 --></template></el-table-column><el-table-columnlabel="姓名" <!-- 表格列的标签 -->prop="user_name" <!-- 表格列绑定的数据字段 -->:show-overflow-tooltip="true" <!-- 当内容溢出时显示tooltip -->/></el-table><Pagev-show="personTotal > 0" <!-- 控制分页组件的显示与隐藏 -->:total="personTotal" <!-- 总条目数 -->size="small" <!-- 分页组件的尺寸 -->show-elevator <!-- 显示跳转输入框 -->show-sizer <!-- 显示每页条数选择框 -->show-total <!-- 显示总条目数 -->class="page" <!-- 分页组件的样式类名 -->:page-size-opts="[10, 20, 30, 40]" <!-- 每页条数的选项 -->:page-size="personsForm.pageSize" <!-- 每页条数的绑定值 -->:current="personsForm.pageNo" <!-- 当前页码的绑定值 -->@on-change="changePersonsPage" <!-- 页码变化时的事件处理函数changePersonsPage -->@on-page-size-change="personsPageSizeChange" <!-- 每页条数变化时的事件处理函数personsPageSizeChange -->/><div slot="footer" align="center"> <!-- 模态框底部的插槽内容 --><Button type="primary" @click="personsSubmit">确 定</Button> <!-- 确定按钮,点击事件处理函数personsSubmit --></div>
</Modal>
在data中定义暂存勾选的人员Id和人员姓名:
data () {return {personsList: [], // 人员列表listechoList: [],// 人员选中的所有idechoListName: []// 人员选中的所有名字}
首先需要通过接口获取所有待勾选的人员信息,回显之前暂存的数据信息:
// 获取参会人员列表 获取全部人员名单getpersonsList (pageNo, pageSize) {//调用接口personsList(this.personsForm).then((response) => {this.personTotal = response.page.totalthis.personsList = response.data //暂存所有的人员信息this.$nextTick(() => {this.personsList.forEach(item => {//查询当前列表并回显if (this.echoList.includes(item.user_id)) {//设置当前行数据为选中状态this.$refs.personsTable.toggleRowSelection(item, true); }})})})}
其中“ @on-cancel="onClose3
" ”表示关闭modal弹窗后进行的操作:保存勾选数据、清空勾选效果、清空form表单、重置分页信息
// 关闭人员列表弹框onClose3 () {this.showPersons = false //关闭modal弹窗this.echoList = [] //置空暂存的勾选人员Idthis.echoListName = [] //置空暂存的勾选人员姓名this.$refs.personsTable.clearSelection(); //清空未保存勾选this.personsForm.pageSize = 10this.personsForm.pageNo = 1this.personsForm.userName = null}
" @select ",“ @select-all ”官网解释如下:
具体实现代码及解释如下:
// 选择参会人员(已经存在的数据就取消勾选、未存在过的数据就加入勾选)handleSelectionChange(selecteds, row) {if (!this.echoList.includes(row.user_id)) {this.echoList.push(row.user_id); //暂存新勾选的人员Idthis.echoListName.push(row.user_name); //暂存新勾选的人员姓名} else {this.echoList.forEach((id, index) => {if (id == row.user_id) {this.echoList.splice(index, 1); //删除暂存的需要取消勾选的人员Idthis.echoListName.splice(index, 1); //删除暂存的需要取消勾选的人员姓名}});}},// 全选、取消全选handleAllChange(selecteds) {if (selecteds.length > 0) {selecteds.forEach(item => {if (!this.echoList.includes(item.user_id)) {this.echoList.push(item.user_id); //暂存新勾选的人员Idthis.echoListName.push(item.user_name); //暂存新勾选的人员姓名}});} else {this.personsList.forEach(item => {this.echoList.forEach((id, index) => {if (id === item.user_id) {this.echoList.splice(index, 1); //删除暂存的需要取消勾选的人员Idthis.echoListName.splice(index, 1); //删除暂存的需要取消勾选的人员姓名}});});}}
最后,记得在关闭弹窗时清空勾选及表单:
this.echoList = []this.echoListName = []this.$refs.personsTable.clearSelection();this.personsForm.userName = null;
相关文章:

解决el-table组件中,分页后数据的勾选、回显问题?
问题描述: 1、记录一个弹窗点击确定按钮后,table列表所有勾选的数据信息2、再次打开弹窗,回显勾选所有保存的数据信息3、遇到的bug:切换分页,其他页面勾选的数据丢失;点击确认只保存当前页的数据࿱…...

web网络安全
web安全 一,xss 跨站脚本攻击(全称Cross Site Scripting,为和CSS(层叠样式表)区分,简称为XSS)是指恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时&…...

若依 ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码
目录 0. 前言0.1 说明 1. 后端部分1.1 添加依赖1.2. 修改 application.yml1.3. 新增 CaptchaRedisService 类1.4. 添加必须文件1.5. 移除不需要的类1.6. 修改登录方法1.7. 新增验证码开关获取接口1.8. 允许匿名访问 2. 前端部分(Vue3)2.1. 新增依赖 cryp…...
安卓10 flutter webview 回退会闪退
现象 在安卓10设备上,访问了webview页面后,回退到其他页面后,大概率会闪退,请查看issuses https://github.com/flutter/flutter/issues/78405 解决思路:在回退前,先把webview销毁掉,重新生成一个…...
【Unity入门】物体5种移动方法
目录 一、通过修改位置来实现移动二、通过物理系统实现位移三、通过CharacterController组件四、通过输入控制物体移动 一、通过修改位置来实现移动 利用修改Transform组件的position的两种常用方法。 使用Translate()函数 /*物体将向x方向移动1.5单位…...

Elasticsearch的 8.x常用api汇总
ES的查询语法比较复杂,对于初学者需要在不断练习中才会逐渐掌握,本文汇总了ES各种查询语法以及常用api,可以作为新手的实用笔记 首先,安装 Kibana! 下载Elasticsearch,官方下载页面;Elasticsearch 参考,官方文档;<...

k8syaml提供的几个有意思的功能,Kubernetes在线工具网站
k8syaml.cn 提供的几个有意思的功能。 一、yaml资源快速生成 之前编写operator的helm的时候就需要自己写deployment、service、configmap这些资源,那么多字段也记不清,都是先找个模版,然后copy改改,再看官方文档,添加…...

【图像分类】【深度学习】【Pytorch版本】 ResNeXt模型算法详解
【图像分类】【深度学习】【Pytorch版本】 ResNeXt模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】 ResNeXt模型算法详解前言ResNeXt讲解分组卷积(Group Converlution)分割-变换-合并策略(split-transform-merge)ResNeXt模型结构 ResNeXt Pytorch代码完整代码总…...
Android 14 应用适配指南
Android 14 应用适配指南:https://dev.mi.com/distribute/doc/details?pId1718 Android 14 功能和变更列表 | Android 开发者 | Android Developers 1.获取Android 14 1.1 谷歌发布时间表 https://developer.android.com/about/versions/14/overview#timeli…...

【AI美图提示词】第07期效果图,AI人工智能自动绘画,精选绝美版美图欣赏
AI诗配画 山水画中景如画,云雾缭绕峰峦间。桥畔流水潺潺响,诗意盎然山水间。上面的诗句和图片全部来自AI自动化完成,这就是技术的力量,接下来我们进行模型生成学习: 先上原始底图: 下面是模型生成效果图&a…...

前端知识(十三)——JavaScript监听按键,禁止F12,禁止右键,禁止保存网页【Ctrl+s】等操作
禁止右键 document.oncontextmenu new Function("event.returnValuefalse;") //禁用右键禁止按键 // 监听按键 document.onkeydown function () {// f12if (window.event && window.event.keyCode 123) {alert("F12被禁用");event.keyCode 0…...
面向对象设计与分析(28)单例模式的奇异递归模板CRTP实现
前面我们介绍了单例模式的两种实现:懒汉模式和饿汉模式,今天我们以新的方式来实现可复用的单例模式。 奇异递归模板是指父类是个模板类,模板类型是子类类型,即父类通过模板参数可以知道子类的类型。 // brief: a singleton base…...

微信小程序 - 龙骨图集拆分
微信小程序 - 龙骨图集拆分 注意目录结构演示动画废话一下业务逻辑注意点龙骨JSON图集结构 源码分享dragonbones-split.jsdragonbones-split.jsondragonbones-split.wxmldragonbones-split.wxssimgUtil.js 参考资料 注意 只支持了JSON版本 目录结构 演示动画 Spine播放器1.5.…...
使用React 18和WebSocket构建实时通信功能
1. 引言 WebSocket是一种在Web应用中实现双向通信的协议。它允许服务器主动向客户端推送数据,而不需要客户端发起请求。在现代的实时应用中,WebSocket经常用于实时数据传输、聊天功能、实时通知和多人协作等场景。在本篇博客中,我们将探索如…...

vue3使用vue-router嵌套路由(多级路由)
文章目录 1、Vue3 嵌套路由2、项目结构3、编写相关页面代码3.1、编写route文件下 index.ts文件3.2、main.ts文件代码:3.3、App.vue文件代码:3.4、views文件夹下的Home文件夹下的index.vue文件代码:3.5、views文件夹下的Home文件夹下的Tigerhh…...

openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-处理错误表
文章目录 openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-处理错误表164.1 操作场景164.2 查询错误信息164.3 处理数据导入错误 openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STDIN导入数据-…...

QT Widget - 随便画个圆
简介 实现在界面中画一个圆, 其实目的是想画一个LED效果的圆。代码 #include <QApplication> #include <QWidget> #include <QPainter> #include <QColor> #include <QPen>class LEDWidget : public QWidget { public:LEDWidget(QWidget *pare…...

js输入框部分内容不可编辑,其余正常输入,el-input和el-select输入框和多个下拉框联动后的内容不可修改
<tr>//格式// required自定义指令<e-td :required"!read" label><span>地区:</span></e-td><td>//v-if"!read && this.data.nationCode 148"显示逻辑<divclass"table-cell-flex"sty…...
分布式文件存储系统minio了解下
什么是minio minio 是一个基于 Apache License v2.0 开源协议的对象存储服务。非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小。 是一种海量、安全、低成本、高可靠的云存储…...

迅为RK3568开发板使用OpenCV处理图像-ROI区域-位置提取ROI
在图像处理过程中,我们可能会对图像的某一个特定区域感兴趣,该区域被称为感兴趣区域(Region of Interest, ROI)。在设定感兴趣区域 ROI 后,就可以对该区域进行整体操作。 位置提取 ROI 本小节代码在配套资料“iTOP-3…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...