使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序
文章目录
- 实现效果
- Sortable.js介绍
- 下载依赖
- 添加类名
- 导入sortablejs
- 初始化拖拽实例
- 拖拽完成后的处理
- 总结
在开发过程中,我们经常需要处理表格数据,并为用户提供便捷的排序方式。特别是在需要管理长列表、分类数据或动态内容时,拖拽排序功能显得尤为重要。它允许用户通过简单的拖动操作来自定义数据的显示顺序,这不仅提高了操作效率,也增强了用户的参与感。
结合 Vue 3 和 Element Plus 框架,我们可以利用 Sortable.js 库轻松实现这一功能。本文将介绍如何在el-table组件中集成拖拽排序,使数据管理更加直观和高效。
实现效果

Sortable.js介绍
Sortable.js 是一款强大且轻量级的JavaScript库,专为实现元素的拖放排序功能而设计。它不依赖于 jQuery 或其他大型框架,能够独立工作,并且兼容包括 IE9 及以上版本在内的现代浏览器以及移动触摸设备。这使得Sortable.js成为跨平台Web开发项目的理想选择。
该库的特点包括:
- 广泛兼容性:支持多种浏览器环境,包括旧版IE浏览器(从IE9开始),以及各种现代浏览器,确保了良好的跨浏览器体验。
- 框架无关:
Sortable.js可以直接集成到Meteor、AngularJS、React、Vue、Knockout等多种前端框架中,无需担心框架限制。 - 触摸友好:针对移动端优化,能够在触摸屏设备上提供流畅的拖拽体验。
- 高度可定制:提供丰富的配置选项,如动画效果、拖拽预览样式(
ghostClass)、分组排序(group)等功能,允许开发者根据需求调整行为和外观。 - 易于集成:只需引入
Sortable.js文件,然后通过简单的JavaScript代码即可启用拖放排序功能,适用于列表、表格等常见布局元素。 - 模块化设计:
Sortable.js采用模块化结构,开发者可以根据实际需求选择导入核心库或是包含所有插件的完整版本,有助于控制最终打包文件的大小。
通过Sortable.js,开发者可以快速实现如列表项的拖动重排、不同容器间的元素转移等常见交互需求,大大提升了Web应用的交互性和用户体验。
下载依赖
npm i sortablejs @types/sortablejs
添加类名
首先给 el-table 加上类名:class="elTable"
<el-table class="elTable" :data="tableData">
导入sortablejs
//导入sortablejs
import Sortable from 'sortablejs';
初始化拖拽实例
const initSort = () => {const table = document.querySelector(".elTable .el-table__body-wrapper tbody");Sortable.create(table, {group: 'shared',animation: 150,ghostClass: 'sortable-ghost', //拖拽样式easing: 'cubic-bezier(1, 0, 0, 1)',onStart: (item: any) => {console.log(item);},// 结束拖动事件onEnd: (item: any) => {console.log(item);setNodeSort(item.oldIndex, item.newIndex)},})
}
拖拽完成后的处理
const setNodeSort = (oldIndex: any, newIndex: any) => {// 使用arr复制一份表格数组数据const arr = xxx;console.log(arr);const currentRow = arr.splice(oldIndex, 1)[0]arr.splice(newIndex, 0, currentRow )// 原数组置空xxx = [];nextTick(async () => {xxx = arr;// 数据处理// ...// 提交后后台数据进行排序// ...});
}
总结
在本文中,我们探讨了如何在 Vue 3 与 Element Plus 的 el-table 组件中集成 Sortable.js 库,以实现表格数据的拖拽排序功能。
通过使用Sortable.js,我们能够为用户提供一种直观的方式来排序数据,使得应用更加符合用户需求。
在未来的项目中,这种拖拽排序的实现方法可以为开发者节省时间,提高工作效率,同时也能提升最终产品的用户体验。希望本文能够帮助开发者更好地理解和实现这一功能,为日常开发提供支持。
相关文章:
使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序
文章目录 实现效果Sortable.js介绍下载依赖添加类名导入sortablejs初始化拖拽实例拖拽完成后的处理总结 在开发过程中,我们经常需要处理表格数据,并为用户提供便捷的排序方式。特别是在需要管理长列表、分类数据或动态内容时,拖拽排序功能显得…...
MySQL索引相关介绍及优化(未完...)
如何看一条SQL语句的执行好坏? MySQL提供了自带的工具Explain可以查看sql语句的执行好坏。 explain主要的列: 1:type:这一列表示MySQL决定如何查找表中的行,查找数据行记录的大概范围。 有 system const eq_ref ref…...
【AI+教育】一些记录@2024.11.04
一、尝新 今天尝试了使用九章随时问,起因是看到快刀青衣的AI产品好用榜,里面这么介绍九章随时问:「它不是像其他产品那样,直接给你出答案。而是跟你语音对话,你会感觉更像是有一位老师坐在你的旁边,一步步…...
三维测量与建模笔记 - 2.2 射影几何
教程中H矩阵写的有问题,上图中H矩阵应该是(n1) x (m1) 共点不变性,下图中黄色方块标记的点,在射影变换前后,虽然直线的形状有所变化,但仍然相交于同一个点。 共线不变性,下图黄色标记的两个点,在…...
论文速读:简化目标检测的无源域适应-有效的自我训练策略和性能洞察(ECCV2024)
中文标题:简化目标检测的无源域适应:有效的自我训练策略和性能洞察 原文标题:Simplifying Source-Free Domain Adaptation for Object Detection: Effective Self-Training Strategies and Performance Insights 1、Abstract 本文重点关注计算…...
ros与mqtt相互转换
vda5050 VDA5050协议介绍 和 详细翻译-CSDN博客 ros与mqtt相互转换 如何转换的,通过某个中转包,获取ros的消息然后以需要的格式转换为mqtt 需要的参数 ros相关 parameters[ (ros_subscriber_type, vda5050_msgs/NodeState), (ros_subscriber_queue…...
Golang | Leetcode Golang题解之第522题最长特殊序列II
题目: 题解: func isSubseq(s, t string) bool {ptS : 0for ptT : range t {if s[ptS] t[ptT] {if ptS; ptS len(s) {return true}}}return false }func findLUSlength(strs []string) int {ans : -1 next:for i, s : range strs {for j, t : range s…...
安卓开发之数据库的创建与删除
目录 前言:基础夯实:数据库的创建数据库的删除注意事项 效果展示:遇到问题:如何在虚拟机里面找到这个文件首先,找到虚拟机文件的位置其次,找到数据库文件的位置 核心代码: 前言: 安…...
数据结构:LRUCache
什么是LRUCache 首先我们来看看什么是cache 缓存(Cache)通常用于两个速度不同的介质之间,以提高数据访问的速度和效率。这里有几个典型的应用场景: 处理器和内存之间: 处理器(CPU)的运算速度远…...
shell脚本案例:创建用户和组
使用场景 在部署程序时,往往首要任务是创建用户和组。有的程序可能用到的组、用户比较多;且不知道服务器环境是否已经有了所需的组和用户。所以针对这个情况,根据Oracle RAC部署时的实际情况写了个脚本。 Linux版本 脚本代码 #!/bin/bash …...
C++笔试题之实现一个定时器
一.定时器(timer)的需求 1.执行定时任务的时,主线程不阻塞,所以timer必须至少持有一个线程用于执行定时任务 2.考虑到timer线程资源的合理利用,一个timer需要能够管理多个定时任务,所以timer要支持增删任务…...
【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-13
文件下载与邀请翻译者 学习英特尔开发手册,最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册,会是一件耗时费力的工作。如果有愿意和我一起来做这件事的,那么ÿ…...
快消零售行业的培训创新:构建在线培训知识库
在快速消费品(FMCG)行业中,员工的培训和发展对于保持竞争力至关重要。随着电子商务的兴起和消费者行为的变化,快消零售行业需要不断适应新的市场趋势。在线培训知识库作为一种有效的培训工具,可以帮助企业提升员工技能…...
【AI开源项目】Botpress - 开源智能聊天机器人平台及其部署方案
文章目录 Botpress 概述Botpress 的定位 Botpress 的主要特点1. OpenAI 集成2. 易于使用3. 定制和扩展性4. 多平台支持5. 集成和扩展 API6. 活跃的社区和详尽的文档 部署方案集成集成开发集成部署机器人示例开发工具代理本地开发先决条件从源代码构建 Botpress 如何解决常见问题…...
一文读懂系列:SSL加密流量检测技术详解
SSL加密流量检测功能的主要目的是为了对加密流量做解密处理,并对解密后的流量做内容安全检查(比如反病毒、入侵防御、URL远程查询、内容过滤、文件过滤和邮件过滤等)和审计(防止信息泄露)。接下来我们详细介绍SSL加密流…...
Android Studio各种历史版本
下载地址:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载...
大数据导论及分布式存储HadoopHDFS入门
思维导图 数据导论 数据是什么? 进入21世纪,我们的生活就迈入了"数据时代" 作为21世纪的新青年,"数据"一词经常出现。 数据无时无刻的在影响着我们的现实生活 什么是数据? 数据又如何影响现实生活? 数据…...
语言模型的采样方法
语言模型的采样方法 语言模型的输出为一个向量,该向量的每一维代表着词典中对应词的概率。 在采用自回归范式的文本生成任务中,语言模型将依次生成一组向量并将其解码为文本。将这组向量解码为文本的过程被成为语言模型解码。 解码过程显著影响着生成文本…...
使用 Nginx 配置真实 IP 地址转发
使用 Nginx 配置真实 IP 地址转发 在许多 web 应用程序中,获取客户端的真实 IP 地址非常重要,尤其是在使用反向代理服务器(如 Nginx)时。本文将指导你如何在 Nginx 中配置 X-Real-IP 和 X-Forwarded-For 头部,以确保你…...
WPF+MVVM案例实战与特效(二十四)- 粒子字体效果实现
文章目录 1、案例效果2、案例实现1、文件创建2.代码实现3、界面与功能代码3、总结1、案例效果 提示:这里可以添加本文要记录的大概内容: 2、案例实现 1、文件创建 打开 Wpf_Examples 项目,在 Views 文件夹下创建窗体界面 ParticleWindow.xaml,在 Models 文件夹下创建粒子…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
