【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里的选中元素

相关推荐
sunny3272 分钟前
Promise结合axios的使用
前端·javascript·promise
一键三联啊2 分钟前
【FastJSON】的parse与parseObject
linux·前端·python
高峰君主2 分钟前
跨端时代的全栈新范式:React Server Components深度集成指南
前端·react.js·前端框架
贾公子2 分钟前
使用哈希表(Map)解决“只出现一次的数字 II”问题
前端·javascript
贾公子3 分钟前
LeetCode - 739.每日温度问题单调栈解法
前端·javascript
じ☆ve 清风°4 分钟前
Vue.js 核心特性解析:响应式原理与组合式API实践
前端·vue.js
三年三月5 分钟前
three中的BufferGeoery
前端·three.js
kovli6 分钟前
红宝书第十六讲:通俗详解JavaScript回调函数与事件循环
前端·javascript
fordG7 分钟前
Vue3 mitt 封装 cursor 回答版本
前端
snakeshe10107 分钟前
React 中 useEffect 和 useLayoutEffect 的区别与使用场景
前端