使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序

news2024/11/4 23:35:29

文章目录

    • 实现效果
    • Sortable.js介绍
    • 下载依赖
    • 添加类名
    • 导入sortablejs
    • 初始化拖拽实例
    • 拖拽完成后的处理
    • 总结

在开发过程中,我们经常需要处理表格数据,并为用户提供便捷的排序方式。特别是在需要管理长列表、分类数据或动态内容时,拖拽排序功能显得尤为重要。它允许用户通过简单的拖动操作来自定义数据的显示顺序,这不仅提高了操作效率,也增强了用户的参与感。

结合 Vue 3Element Plus 框架,我们可以利用 Sortable.js 库轻松实现这一功能。本文将介绍如何在el-table组件中集成拖拽排序,使数据管理更加直观和高效。


实现效果

在这里插入图片描述


Sortable.js介绍

Sortable.js 是一款强大且轻量级的JavaScript库,专为实现元素的拖放排序功能而设计。它不依赖于 jQuery 或其他大型框架,能够独立工作,并且兼容包括 IE9 及以上版本在内的现代浏览器以及移动触摸设备。这使得Sortable.js成为跨平台Web开发项目的理想选择。

该库的特点包括:

  • 广泛兼容性:支持多种浏览器环境,包括旧版IE浏览器(从IE9开始),以及各种现代浏览器,确保了良好的跨浏览器体验。
  • 框架无关Sortable.js可以直接集成到MeteorAngularJSReactVueKnockout等多种前端框架中,无需担心框架限制。
  • 触摸友好:针对移动端优化,能够在触摸屏设备上提供流畅的拖拽体验。
  • 高度可定制:提供丰富的配置选项,如动画效果、拖拽预览样式(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 3Element Plusel-table 组件中集成 Sortable.js 库,以实现表格数据的拖拽排序功能。

通过使用Sortable.js,我们能够为用户提供一种直观的方式来排序数据,使得应用更加符合用户需求。

在未来的项目中,这种拖拽排序的实现方法可以为开发者节省时间,提高工作效率,同时也能提升最终产品的用户体验。希望本文能够帮助开发者更好地理解和实现这一功能,为日常开发提供支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2232162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Kafka构建大规模消息传递系统

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Kafka构建大规模消息传递系统 引言 Kafka 简介 安装 Kafka 创建主题 生产者 消费者 高级特性 分区 持久化 消费者组 消息确认…

队列(Queue)的介绍与实现

文章目录 队列队列的概念及结构 队列的实现初始化队列销毁队列队尾入队列队头出队列获取队列头部元素检测队列是否为空获取队列中有效元素个数 队列 队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表。队列遵…

【大模型之Graph RAG系列之二】对比传统RAG技术中使用的向量搜索技术,知识图谱有哪些优缺点?

向量搜索和知识图谱是两项用于改善搜索体验的重要技术。结合这两种技术形成的Graph RAG可以进一步提高搜索的准确性和上下文相关性。本文将深入对比向量搜索和知识图谱&#xff0c;让读者快速了解这两种技术的原理及优缺点&#xff0c;以便于将来的技术决策。 向量搜索 向量搜…

电赛入门之软件stm32keil+cubemx

hal库可以帮我们一键生成许多基本配置&#xff0c;就不需要自己写了&#xff0c;用多了hal库就会发现原来用基本库的时候都过的什么苦日子&#xff08;笑 下面我们以f103c8t6&#xff0c;也就是经典的最小核心板来演示 一、配置工程 首先来新建一个工程 这里我们配置rcc和sys&…

从“技术深耕”到“品牌绽放”,解码遨游通讯的高成长路径!

在粤港澳大湾区这片充满活力的土地上&#xff0c;科技创新正以前所未有的速度推动着各行各业的发展。在这样一个充满机遇与挑战的环境中&#xff0c;遨游通讯以其在危险作业场景和应急救援场景中提供的定制化智能终端解决方案&#xff0c;脱颖而出&#xff0c;成为危急特赛道的…

golang通用后台管理系统02(RSA加密解密,登录密码加密解密)

参考&#xff1a;https://blog.csdn.net/lady_killer9/article/details/118026802 1.加密解密工具类PasswordUtil.go package utilimport ("crypto/rand""crypto/rsa""crypto/x509""encoding/pem""fmt""log"&qu…

【HarmonyOS NEXT】在 HarmonyOS NEXT 中实现优雅的加载动画

【HarmonyOS NEXT】在 HarmonyOS NEXT 中实现优雅的加载动画 在移动应用开发中&#xff0c;加载动画是提升用户体验的重要工具。在应用程序处理数据或加载页面时&#xff0c;为用户提供视觉反馈尤为关键。在这篇博客中&#xff0c;我们将探讨如何在 HarmonyOS NEXT 中使用 Sta…

群控系统服务端开发模式-应用开发-菜单功能开发

为什么优先开发菜单&#xff0c;而不是优先开发管理员&#xff1f;查看一下程序草图就明白&#xff0c;还有一个重点就是&#xff0c;管理员需要添加图片&#xff0c;而我还没有封装上传工具及上传目标。 一、添加路由 在根目录下route文件夹下的app.php文件里面&#xff0c;添…

服务器新建用户

文章目录 前言一、步骤二、问题三、赋予管理员权限总结 前言 环境&#xff1a; 一、步骤 创建用户需要管理员权限sudo sudo useradd tang为用户设置密码 sudo passwd tang设置密码后&#xff0c;可以尝试使用 su 切换到 tang 用户&#xff0c;确保该用户可以正常使用&#…

AI产品独立开发变现实战营

亮点&#xff1a; 1、三大真实商业项目&#xff0c;商业盈利、AI产品开发综合能力提升 2、掌握一人公司、副业产品设计-开发-运营-盈利落地全流程 3、大牛私藏AI盈利工具倾囊相授 4、借势增加睡后收入&#xff0c;从容应对裁员大环境与年龄危机 大纲&#xff1a; 第1章 独立…

Spring Boot技术:校园社团信息管理的高效路径

5系统详细实现 5.1 管理员模块的实现 5.1.1 学生管理 校园社团信息管理系统的系统管理员可以管理学生&#xff0c;可以对学生信息修改删除以及查询操作。具体界面的展示如图5.1所示。 图5.1 学生信息管理界面 5.1.2 社长管理 系统管理员可以查看对社长信息进行修改&#xff0…

Python小游戏20——超级玛丽

首先&#xff0c;你需要确保你的Python环境中安装了pygame库。如果还没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; bash pip install pygame 运行效果展示 代码展示 python import pygame import sys # 初始化pygame pygame.init() # 设置屏幕尺寸 screen_width …

我也谈AI

“随着人工智能技术的不断发展&#xff0c;我们已经看到了它在各行业带来的巨大变革。在医疗行业中&#xff0c;人工智能技术正在被应用于病例诊断、药物研发等方面&#xff0c;为医学研究和临床治疗提供了新的思路和方法&#xff1b;在企业中&#xff0c;人工智能技术可以通过…

【论文复现】语言模型中的多模态链式推理

&#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐、摄影的一位博主。 &#x1f4d7;本文收录于论文复现系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初阶、C…

ios Framework版本号的问题。

自己创建的framework和普通的app的版本号设置的地方是有所有不同的。 framework 的版本号是在 TARGETS -> Build Settings -> current Project Version 这个地方设置的&#xff0c; 在创建framework的时候xcode 会自动创建一个framework.h的文件名&#xff0c;framewo…

使用Nginx作为反向代理和负载均衡器

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Nginx作为反向代理和负载均衡器 引言 Nginx 简介 安装 Nginx Ubuntu CentOS 配置 Nginx 作为反向代理 配置 Nginx 作为负载…

JeecgBoot集成工作流实战教程

Activiti是一个轻量级的工作流程和业务流程管理&#xff08;BPM&#xff09;平台&#xff0c;它主要面向业务人员、开发人员和系统管理员。这个平台的核心是一个快速且可靠的Java BPMN 2流程引擎。Activiti是开源的&#xff0c;并且基于Apache许可证进行分发。它可以运行在任何…

【Python3】【力扣题】409. 最长回文串

【力扣题】题目描述&#xff1a; &#xff08;题意理解&#xff09;统计如下&#xff1a; ① 字母个数本身是偶数。 ② 字母个数是奇数&#xff0c;统计奇数中的偶数部分&#xff0c;例如&#xff1a;字母个数为3&#xff0c;统计其中的2。 ③ 中间可以有一个奇数字母。即只要有…

链接分析与反向链接的重要性及最佳实践解析

内容概要 链接分析与反向链接是网络营销和搜索引擎优化的两个基本要素。了解这些概念的基础知识&#xff0c;能够帮助网站管理员和市场营销者更好地掌握搜索引擎的运作机制。链接分析主要是指评估网站之间的连接关系&#xff0c;通过研究不同网页之间的链接情况&#xff0c;找…

HTML 基础标签——链接标签 <a> 和 <iframe>

文章目录 1. `<a>` 标签属性详细说明示例2. `<iframe>` 标签属性详细说明示例注意事项总结链接标签在HTML中是实现网页导航的重要工具,允许用户从一个页面跳转到另一个页面或嵌入外部内容。主要的链接标签包括 <a> 标签和<iframe> 标签。本文将深入探…