【vue】element el-table怎么实现跨页勾选

【vue】element el-table怎么实现跨页勾选

需求

由后端提供分页接口,每一次翻页el-table的数据都会被刷新一次,这种情况下怎么实现跨页的勾选

代码

html 复制代码
<el-table
      ref="multipleTable"
      v-loading="loading"
      :data="operationList"
      @selection-change="handleSelectionChange"
    >
      <el-table-column type="selection" width="55"> </el-table-column>
</el-table>
javascript 复制代码
handleSelectionChange(e) {
      if(this.loading) return 
      for(let listItem of this.operationList){
        let eIndex = e.findIndex(item=>item.ic===listItem.ic)
        if(eIndex>=0){
          //该数据再当页被选中了
          let index = this.batchRedeployIds.findIndex(item=>item.id===listItem.id)
          if(index<0){
            //如果batchRedeployIds中没有该数据则添加上
            this.batchRedeployIds.push(listItem)
          }
        }else{
          //该数据在当页没被选中
          let index = this.batchRedeployIds.findIndex(item=>item.id===listItem.id)
          if(index>=0){
            //如果batchRedeployIds中有该数据则需要删除
            this.batchRedeployIds.splice(index,1)
          }
        }
      }
    },

翻页方法

javascript 复制代码
getList() {
      请求方法(paramsObj)
        .then((res) => {
          // console.log(res.rows);
          if (res.code == '200') {
            this.operationList = res.data.records;
            this.total = res.data.total;
            // this.loading = false;
            this.$nextTick(()=>{
              for(let listItem of this.operationList){
                let index = this.batchRedeployIds.findIndex(item=>item.workOrderId===listItem.workOrderId)
                if(index>=0){
                  this.$nextTick(()=>{
                    this.$refs.multipleTable.toggleRowSelection(listItem,true)
                  })
                }else{
                  // this.$refs.multipleTable.toggleRowSelection(listItem,false)
                }
              }
              this.loading=false
            })
          }
        })
        .catch(() => {
          this.loading = false;
        });
    },

分析

1.定义了一个batchRedeployIds变量,储存所有被选中的行

2.每次勾选变化时,往batchRedeployIds里添加或删除元素

3.每次分页请求后,回填batchRedeployIds里的选中元素

相关推荐
miofly15 分钟前
GitHub 今日推荐|sweety-handdraw-video:文章转手绘口播视频
javascript·开源·github
console.log('npc')30 分钟前
[特殊字符] AI Agent 工作台前端实战教程 · 新手入门指南
前端·人工智能
gCode Teacher 格码致知34 分钟前
前端教学2:ul标签的应用场合与经典案例
前端
const_qiu1 小时前
第 2.5 章 2.5.6:前端登录、Token 无感续签与路由守卫
java·前端·人工智能·状态模式
用户83134859306981 小时前
Vue3 事件:常用用法与开发高频坑点
前端·javascript·vue.js
weixin_446260851 小时前
ReAct‑Evolve:基于轨迹反馈的ReAct智能体自主提示演化系统
前端·react.js·前端框架
其实防守也摸鱼1 小时前
存储管理:页面置换算法学习任务(测验题要求给出置换页面顺序,缺页次数,缺页率)
android·前端·数据库·学习·oracle·自动化
怒放的生命19911 小时前
前端项目 Docker 打包实操指南
前端·docker·容器
tedcloud1231 小时前
Docker Compose 部署 Immich:手机照片自动备份与常见故障排查
运维·前端·docker·容器·智能手机·开源·流程图
时间的情敌1 小时前
《WebGIS 前端的成长路线,三维可视化工程师需要掌握什么》
前端·状态模式