Vue+el-table+sortable踩坑

2023-11-12

1、拖拽后,同页面切换tab,表格数据更新,表头显示顺序有误(拖拽[1,2,3]➡[2,1,3],更新后为[5,4,6],应为[4,5,6])

原代码
<el-table-column v-for="(item, index) in col"
        :key="`col_${index}`"
        :prop="dropCol[index].prop"
        :label="item.label"> 
</el-table-column>

原因:key值绑定固定,拖拽后不随表格更新

解决方案::key="`col_${index}`" ➡ :key="item.value"

<el-table id="crTable" ref="multipleTable" ……>
    <el-table-column prop="name" label="name">
    </el-table-column>
    <el-table-column v-for="(item, index) in value" :key="item.value"
                    :prop="dropValue[index].value" :label="item.label"            
                    align="center">
    </el-table-column>
</el-table>

2、拖拽后改变表格列宽度,目标列宽度不变,原该位置的表格列宽度改变(拖拽[1,2,3]➡[2,1,3],改变2宽度,2宽度不变,1宽度改变,即第一列宽度未改变,第二列宽度改变)

原因:表格未更新,property值仍为拖拽前绑定的值

解决方案:更改表格key值更新表格(因此可用dropValue一个数组设置表格列prop和label),并在$nextTick回调中重新调用create方法,否则property值更新但只能拖拽一次

<el-table id="crTable" ref="multipleTable" :key="tableKey" ……>
    <el-table-column prop="name" label="name">
    </el-table-column>
    <el-table-column v-for="(item, index) in dropValue" :key="item.value"
                     class-name="dropTableColumn"
                    :prop="item.value" :label="item.label" align="center">
    </el-table-column>
</el-table>
<script>
……
export default {
  data () {
    return {
      tableKey: 0,
    }
  },
  mounted () {
    this.tableKey = 0
    this.rowDrop()
    this.columnDrop()
  },
  methods: {
    // 列拖拽
    columnDrop () {
      const wrapperTr = document.getElementById('crTable').querySelector('.el-table__header-wrapper tr')
      const _this = this
      this.sortableObj = Sortable.create(wrapperTr, {
        animation: 180,
        delay: 0,
        ghostClass: 'column-ghost', // 停靠位置样式
        // dragClass: 'drag', // 拖动对象移动样式
        // chosenClass: 'chosen', // 选中样式
        // forceFallback: true, // 禁用html5原生拖拽行为
        draggable: '.dropTableColumn', // 指定可以拖动的元素
        // handle: '.dropText', // 指定拖拽句柄才能拖动父元素
        onEnd: evt => {
          const oldItem = _this.dropValue[evt.oldIndex]
          _this.dropValue.splice(evt.oldIndex, 1)
          _this.dropValue.splice(evt.newIndex, 0, oldItem)
          _this.tableKey += 1
          this.$nextTick(() => {
            this.rowDrop()
            this.columnDrop()
          })
        }
      })
    },
  },
}
</script>

3、改变表格列宽度时,该表格列会进入拖拽状态,其余表格列无法被拖动

原因:可拖拽区域与可改变宽度区域重叠

解决方案:探索中……

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue+el-table+sortable踩坑 的相关文章

随机推荐

  • 训练自己的ChatGPT-OpenAI 微调模型

    OpenAI终于下定决心 正式开放ChatGPT API ChatGPT API地址 https platform openai com docs guides chat gpt 3 5 turbo的新模型 OpenAI正式打开了官方的Ch
  • JavaScript基本数据类型

    JavaScript是弱类型脚本语言 声明变量时无需指定变量的数据类型 JavaScript变量的数据类型是解释时动态决定的 但是JavaScript的值保存在内存中 也是数据类型的 JavaScript基本数据类型有如下五个 1 数值类型
  • CentOS 7 离线安装 PostgreSQL 14

    我这里把全套所需的程序安装包都整理好了 混个资源分 如果实在没积分的兄弟 继续往下 按我写的步骤自己下也行 PG14 离线程序安装包及依赖包全套下载 1 下载离线安装包 下载链接 PostgreSQL PGDG 14 Updates RPM
  • U-Boot初始化及工作流程分析

    0 概述 U Boot通常是从架构相关的汇编文件 尾缀为大写S的汇编文件意为可链接 中获取第一条执行的指令 例如 arch arm cpu armv7 start S arch powerpc cpu mpc83xx start S arc
  • 如何实现弹窗一天只弹一次的需求

    你是否有这种需求 页面需要对用户有一个信息提示的弹窗 但是为了骚扰次数过多导致用户的反感于是产品要求一天只弹一次 服务器显需求太小懒得搭理 于是 重任 就落在你的头上 跟我来 一招搞定一天一次的弹窗 解决思路是 进页面的时候判断如果本地没保
  • Matlab常用字符串操作教程

    Matlab是一种功能强大的编程语言 它提供了丰富的字符串操作函数 在本教程中 我们将介绍一些常用的Matlab字符串操作函数和用法 字符串的创建和访问 使用单引号或双引号创建字符串 str Hello World 或 str Hello
  • 入职阿里工作5年,晋升到P8就剩这份学习笔记了,已帮助多个朋友拿到Offer

    关于程序员 除了做项目来提高自身的技术之外 还有一种提升自己的专业技能就是 多 看 书 入职阿里到现在已经5年了 工作压力大 节奏快 从刚开始的P6到现在的P8 技术上确实得到了成长 尤其是当你维护与大促相关的系统的时候 熬到P8也费了不少
  • vue3使用element组件中的Image导致频闪

    只需要把el image标签换成原生img标签就可以了
  • arma3服务器滚动信息,【图片】武装突袭3服∷务器状态信息查询 - 接口/模块/JАVa-机器人_武装突袭3吧_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 然后是java如何使用接口 以下文档仅供参考 已字符防和谐处理 GetXMLtoServerPlayer GSP new GetXMLtoServerPlayer 得到玩家信息 String S
  • python format 冒号_python之格式化输出

    字符串格式化有两种方式 和format 先介绍下 号的方法 s的语法结构 叫做占位符 就是先占一个位置 然后我们用真实的要显示的数据替换占位符即可 最简单的用法就是下面的方式 其实 s还有其他的功能 s 我的名字是 s 我的年龄是 d al
  • xss-labs通关参考(7-10)

    7 第七关 先提交 Oonn gt 查看源代码 过滤了script 和On 双引号闭合 所以payload oONnmouseover alert xss 8 第八关 先提交 Oonn gt 查看源代码 发现 script和on中间都被加上
  • [leetcode] 437. Path Sum III 解题报告

    题目链接 https leetcode com problems path sum iii You are given a binary tree in which each node contains an integer value F
  • 传输线理论--学习笔记

    1 1传输线方程及其通解 下图为双导线的集总电路模型 在一个微分段内 双导线可以等效集总电路模型 的模型怎么来的 gt 双导线的射频效应 导体损耗 趋肤效应 单位长度串联电阻R0 介质损耗 两根导线之间有介质 如空气 单位长度并联电导G0
  • 第一届排序算法性能大赛(上万字激烈解说)

    写在前面 最近学到了一些重要的排序 并且简单地测了一下各种排序算法在不同的算法实现 优化以及递归和非递归下的运行速度 本文一共提及了以下几种常用到的排序 其他排序使用场景较少 便没有提及 并且本文的全部代码实现均为通俗易懂的c语言 如果觉得
  • Flink Table API & SQL - 概念和通用API

    Table API 和 SQL 集成在一个 API 中 这个 API 用作查询 输入和输出的表 本文档展示了带有 Table API 和 SQL 查询的程序的公共结构 如何注册表 如何查询表以及如何写入表 目录 两个Planner之间的主要
  • shell运行class文件 导入class依赖的jar包

    shell脚本运行class文件导入class依赖的jar包 如下图 我要用shell运行TestFinish类 类中引入了rt jar包 在shell中怎么引入rt jar包呢 很简单只要三步就可以运行了 1 javac cp rt ja
  • win10无法登陆到你的账户解决方法

    进入win10系统登录的时候很多用户遇到了win10无法登陆到你的账户情况 这种问题都会需要来进行重新设置 来看看怎么解决这个无法登录问题吧 更多重装系统教程尽在小白系统重装官网 1 首先我们需要进入win10系统安全模式 安全模式进入方法
  • 【IIOT】欧姆龙PLC数采之NX/NJ系列

    IIOT 欧姆龙PLC数采之NX NJ系列 前言 一 车间级数采系统架构 二 欧姆龙PLC介绍 三 NX NJ系列产品说明 3 1 CPU规格 3 2 内部寄存器 3 3 支持协议 四 数采方案 4 1 选择协议 4 2 硬件架构 1 确认
  • 防页面url缓存

    在开发中 发现当我们访问一个地址之后 包括ajax访问 打开检测会发现第二次请求没有去服务器端 直接走的浏览器自身的缓存 如何避免这样的情况呢 通过在地址栏后拼一串随机数 即可 例如 XXXX t 生成的随机数 随机数可以跟时间戳 或者随机
  • Vue+el-table+sortable踩坑

    1 拖拽后 同页面切换tab 表格数据更新 表头显示顺序有误 拖拽 1 2 3 2 1 3 更新后为 5 4 6 应为 4 5 6 原代码