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踩坑 的相关文章

  • JavaScript 中的“new”关键字是什么?

    The newJavaScript 中的关键字第一次遇到时可能会很混乱 因为人们倾向于认为 JavaScript 不是面向对象的编程语言 它是什么 它解决什么问题 什么时候合适 什么时候不合适 它做了 5 件事 它创建一个新对象 这个对象的
  • 使用 npm 作为构建工具连接文件

    我最近发现我可以使用 npm 作为任务运行程序 而不是 gulp 或 grunt 到目前为止 一切都很棒 lint stylus jade uglify watch 等 但串联部分 我似乎无法实现 gulp 是这样的 gulp task s
  • 使用 jQuery / .data() 避免内存泄漏

    我正在使用 jQuery 动态创建 HTML 元素 现在需要针对它们存储 JavaScript 数据 但是 我现在担心内存泄漏 因为我实际上从未在对象上调用 删除 我 append 和 detach 它们 但从不 remove jQuery
  • Webpack 缺少 CommonsChunk 和 extract-text-webpack-plugin 模块

    我正在跟进Maxime Fabre 的 Webpack 教程 https blog madewithlove be post webpack your bags 我正在尝试获得一个非常简单的 webpack 包 其中包含 1 个入口点和 2
  • 使用 requirejs 加载外部脚本而无需访问配置

    我正在尝试在我正在编写的插件中加载数据表 javascript 库 问题是 当我加载外部资源时 我会遇到冲突 因为当我调用 require 时 数据表与某些内容发生冲突 这是错
  • 有没有办法监控页面上运行的 JavaScript 函数?

    有没有办法查看页面上正在执行哪些功能 如果我在页面上加载外部脚本 是否可以动态更改函数的功能或阻止其运行 HTML5 http www w3 org TR html5 scripting 1 html establish script bl
  • 缓存 firestore 中 get 的第一个实现

    我希望 firestore 每次都先从缓存中获取数据 根据 Firestore 文档 传递 缓存 或 服务器 选项必须启用相同的功能 下面的例子 db collection cities where capital true get cac
  • Google Charts(AreaChart)如何检测缩放变化

    我正在画一个面积图 在覆盖层上有一些标记 我正在使用explorer选项 仅限水平 以便用户放大和缩小 问题是我找不到一种方法来通知缩放更改 以便有机会更新制造商位置 有一个图表范围变化事件 但它不是由 AreaChart 触发的 我尝试检
  • Streamjs和linqjs有什么关系

    读完SICP后 我最近发现streamjs https github com dionyziz stream js 开发商参考linqjs http linqjs codeplex com 作为具有不同语法的替代实现 但我无法建立连接 St
  • React/Redux bundle.js 太大

    我有一个小型的 React 项目 Webpack生成的bundle js大小为6 3Mb 如何将大小减小到 github webpack config js module exports devtool inline source map
  • 卸载/销毁 Angular 延迟加载组件

    我的设置与此处找到的帖子类似http ify io lazy loading in angularjs http ify io lazy loading in angularjs 处理 Angular 中我的应用程序的各种组件的延迟加载 我
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • 离子旋转器未显示

    我用 http 请求填充 Ionic 集合重复列表 但我不想将所有内容直接加载到 DOM 中 因此 我只显示其中一些项目 并在您向下滚动时添加其余项目 为此我实现了无限滚动功能 当我到达页面底部时 它应该显示一个旋转器 但它没有 这些物品至
  • JavaScript:预期的赋值或函数调用,却看到了一个表达式

    我正在使用 JSHint 来确保我的 JavaScript 是 严格的 但我收到以下错误 预期是赋值或函数调用 但看到的是表达式 关于以下代码 var str A B C D var data var strArr str split fo
  • 带时间戳的 Firestore 查询

    如果它是文本字段 我可以使用 where 条件获取数据 但是当我尝试对时间戳字段和日期执行相同操作时 事情不起作用 这是我的代码 home ts firebase firestore collection cities where time
  • 浏览器默认区域设置 - Intl.DateTimeFormat 与 navigator.language

    在对网站进行编码并格式化日期时 我想使用用户在浏览器中设置的区域设置 例如 如果用户定制了他们的chrome settings languages在 Chrome 中设置为非默认值 这就是我想要使用的值 但是 当我在此类浏览器的控制台中运行
  • 显示班级图片 10 秒

    我有下面给出的代码显示9 boxes 其值如下digital time 还有一个班级box002显示digits相当于随机选择的九个盒子的值 box002 can be dragged to digital time starting wi
  • `ie9` - contenteditable false 在父级可编辑时不起作用

    我正在尝试制作内容可编辑和不可编辑的容器 用户可以通过 3 种方式使用它 他们可以将内容与non editable 他们可以将内容与editable 他们可以在不选择其中之一的情况下放置内容 可编辑 我正在努力实现以下目标 content
  • 如何修复nodejs Express服务器中的“MulterError:意外字段”?

    我正在设置一个服务器来从客户端上传 zip 文件 服务器运行express和multer来执行此操作 上传文件时 服务器抛出 MulterError 意外字段 错误 我无法弄清楚是什么导致了它 我尝试过使用 png 图像 效果很好 但对于
  • 在 JSP 或 Javascript 中清除浏览器缓存中的图像

    我正在为一所大学开发JSP Web 应用程序 用户页面中显示人员图片 用户注销后如何从网络浏览器缓存中清除这张图片 使用 JSP 或 JavaScript 那是不可能的 最好的选择是完全禁用相关资源的缓存 创建一个filter https

随机推荐

  • 训练自己的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 原代码