ElementUI之表格toggleRowSelection选中踩坑记录

 更新时间:2024年03月11日 10:38:06   作者:JACHJJ  
这篇文章主要介绍了ElementUI之表格toggleRowSelection选中踩坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

ElementUI表格toggleRowSelection选中踩坑

问题

toggleRowSelection选中不了

解决方法

this.$nextTick( ()=> {
})

问题原因分析

在选中的时候,DOM渲染不及,导致无法选中;

el-table中使用toggleRowSelection方法注意点

1.UI界面

产品设计想实现左侧选中的企微号列表数据在右侧展示已选的企微号,这里分页是记住分页选中的(使用了row-key和reserve-selection属性,这里就不多赘述了)。

  • 在右侧列表有清空按钮就是清空右侧已选的企微号,并且还原左侧为未选状态,这里方便实现使用了el-table组件中的clearSelection方法。
  • 在右侧列表的下面有一个 x号 出掉这条数据的选中状态,左侧对应的状态为未选。使用了toggleRowSelection方法,操作看也没用问题,但若左侧切换分页再切换到对应的选中的页面,再操作右侧的删除按钮,这里就出现了bug,对应的数据不但没有清除已选而且还追加一条数据。

2.代码示例

附录:在线代码截图,展示效果yyds 在线代码截图

3.代码块

代码块放上来,感觉也没有什么用

	//选择企微员工号
    handelOperationClick(val) {
      // this.selectOpeArr = val; // 选择回调函数直接赋值给变量,不要watch监听再存储数据
      this.operationArrId = [];
      this.operationArrName = [];

      // console.log(val, val.length);
      this.chosenList = val;
      // this.chosenList = JSON.parse(JSON.stringify(val))
      this.chosenTotal = val.length;
    },

	//单个删除
    handleByDel(row) {
      // this.chosenList.forEach((item, i) => {
      //   // if (item.mobile == row.mobile) {
      //   //   // return console.log(item);
      //   //   this.chosenList.splice(i, 1); //删除下标为i的元素
      //   //   return this.chosenList;
      //   // }

      //   if (item.id == row.id) {
      //     // return console.log(item);
      //     this.chosenList.splice(i, 1); //删除下标为i的元素
      //     this.$refs.moreTable.toggleRowSelection(row);
      //     return this.chosenList;
      //   }
      // });

      this.$refs.moreTable.selection.forEach((item, i) => {
        if (item.id == row.id) {
          this.$refs.moreTable.toggleRowSelection(item);
        }
      });
      /**
       * 使用el-table表格ref属性调用selection获取表格已选的,再操作toggleRowSelection方法
       * 这样分页再操作toggleRowSelection方法就不会出现多追加一条
       */
    },

4.解决办法

使用el-table表格ref属性调用selection获取表格已选的,再操作toggleRowSelection方法,这样分页再操作toggleRowSelection方法就不会出现多追加一条。

代码示例中开始使用@selection-change监听已选的数据,将其存储变量this.chosenList,再操作toggleRowSelection方法出现左侧分页右侧出现多追加一条数据。这里是分页选中的数据和@selection-change监听已选的数据指针地址不一致导致了。

也是看到网友博客里面这段方法写的,想试试的

console.info(this.$refs.multipleTable.tableData);
console.info(this.$refs.multipleTable);

打印了这个属性发现了selection这个方法正是已经选择的左侧列表,就想在这个属性获取的已选列表数据操作toggleRowSelection方法,试了看可以了,开始看网上文档找解决方法也没有说的,就记录一篇文档吧,今天上班有时间整理一下,哈哈。

这个方法实质是分页之后也获取已选的列表数据,之前的那种方式是在左侧已选的数据赋值给一个变量,当在分页这个地址和赋值变量this.chosenList的地址不一致了,这样分页再操作toggleRowSelection方法就出现多追加一条的问题。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue中element 的upload组件发送请求给后端操作

    vue中element 的upload组件发送请求给后端操作

    这篇文章主要介绍了vue中element 的upload组件发送请求给后端操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue 查看dist文件里的结构(多种方式)

    vue 查看dist文件里的结构(多种方式)

    本文通过三种方式给大家介绍了vue 查看dist文件里的结构,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 基于Vue技术实现递归组件的方法

    基于Vue技术实现递归组件的方法

    这篇文章主要为大家详细介绍了基于Vue技术实现递归组件的方法 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • vue双向数据绑定原理探究(附demo)

    vue双向数据绑定原理探究(附demo)

    本文主要介绍了vue双向数据绑定的原理,文章结尾附上完整demo下载。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • vue如何优雅的使用全局WebSocket

    vue如何优雅的使用全局WebSocket

    这篇文章主要介绍了vue如何优雅的使用全局WebSocket问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 关于vue项目中搜索节流的实现代码

    关于vue项目中搜索节流的实现代码

    这篇文章主要介绍了关于vue项目中搜索节流的实现代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • vue中@change兼容问题详解

    vue中@change兼容问题详解

    这篇文章主要介绍了vue中@change兼容问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Vue3获取DOM节点的3种方式实例

    Vue3获取DOM节点的3种方式实例

    Vue本来无需操作DOM来更新界面,而且Vue也不推荐我们直接操作DOM,但是我们非要拿到DOM操作DOM怎么办,下面这篇文章主要给大家介绍了关于Vue3获取DOM节点的3种方式,需要的朋友可以参考下
    2023-02-02
  • vue项目中播放rtmp视频文件流的方法

    vue项目中播放rtmp视频文件流的方法

    这篇文章主要介绍了vue项目中播放rtmp视频文件流 ,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • vue3配置router路由并实现页面跳转功能

    vue3配置router路由并实现页面跳转功能

    这篇文章主要介绍了vue3配置router路由并实现页面跳转,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论