Vue3 中使用 Sortablejs 实现拖拽排序功能 序号不更新问题
Vue3 中使用 Sortablejs 实现拖拽排序功能 序号不更新问题
- 安装依赖
npm install sortablejs --save
- 简单使用
<template><div class="app-container"><div class="table-header"><el-button type="primary" @click="handleAdd">添加</el-button></div><el-table :data="tableData" row-key="code"><el-table-column width="50"><template #default><el-icon class="drag-handle"><Operation /></el-icon></template></el-table-column><el-table-column label="序号" width="80" align="center"><template #default="scope">{{ scope.$index + 1 }}</template></el-table-column><el-table-column prop="name" label="名称"></el-table-column></el-table></div>
</template><script setup>
import { ref, onMounted, nextTick } from 'vue'
import Sortable from 'sortablejs'const tableData = ref([{ code: 1, name: '项目1' },{ code: 2, name: '项目2' },{ code: 3, name: '项目3' }
])// 添加数据方法
const handleAdd = () => {const newData = {code: Date.now(),name: '新项目' + (tableData.value.length + 1)}tableData.value.push(newData)
}// 记录滚动位置
const scrollTopTemp = ref(0)onMounted(() => {const el = document.querySelector('.el-table__body-wrapper tbody')if (!el) returnSortable.create(el, {handle: '.drag-handle', // 拖拽句柄animation: 150, // 动画过渡时间onEnd({ newIndex, oldIndex }) {const currRow = tableData.value.splice(oldIndex, 1)[0]tableData.value.splice(newIndex, 0, currRow)}})
})
</script><style scoped>
.table-header {margin-bottom: 20px;
}.drag-handle {cursor: move;font-size: 20px;color: #909399;
}:deep(.el-table__row) {cursor: move;
}
</style>
有时因为嵌套原因,或者循环创建会造成 序号不更新的情况解决方法如下
onEnd({ newIndex, oldIndex }) {const listTemp = [...tableData.value]const currRow = listTemp.splice(oldIndex, 1)[0]listTemp.splice(newIndex, 0, currRow)// 使用 nextTick 确保数据更新后再设置滚动位置tableData.value = []nextTick(() => {tableData.value = listTemp})}
该方法会解决序号刷新问题 但是会造成表格重置 导致 滚动条回到顶部解决如下
Sortable.create(el, {handle: '.drag-handle', // 拖拽句柄animation: 150, // 动画过渡时间onStart() {// 记录滚动位置// 这里需要注意你的滚动元素 是那个 我的是html标签 scrollTopTemp.value = document.documentElement.scrollTop},onEnd({ newIndex, oldIndex }) {const currRow = tableData.value.splice(oldIndex, 1)[0]tableData.value.splice(newIndex, 0, currRow)// 使用 nextTick 确保数据更新后再设置滚动位置tableData.value = []nextTick(() => {tableData.value = listTempnextTick(() => {// 这里需要注意你的滚动元素 是那个 我的是html标签 document.documentElement.scrollTop = scrollTopTemp.value})})}})
-
注意:
弹窗中的表格拖拽 请在 每次弹窗打开后面进行初始化。 -
完成!
相关文章:
Vue3 中使用 Sortablejs 实现拖拽排序功能 序号不更新问题
Vue3 中使用 Sortablejs 实现拖拽排序功能 序号不更新问题 安装依赖 npm install sortablejs --save简单使用 <template><div class"app-container"><div class"table-header"><el-button type"primary" click"hand…...
网络运维学习笔记(DeepSeek优化版) 024 HCIP-Datacom OSPF域内路由计算
文章目录 OSPF域内路由计算:单区域的路由计算一、OSPF单区域路由计算原理二、1类LSA详解2.1 1类LSA的作用与结构2.2 1类LSA的四种链路类型 三、OSPF路由表生成验证3.1 查看LSDB3.2 查看OSPF路由表3.3 查看全局路由表 四、2类LSA详解4.1 2类LSA的作用与生成条件4.2 2…...
【云馨AI-大模型】自动化部署Dify 1.1.2,无需科学上网,Linux环境轻松实现,附Docker离线安装等
Dify介绍 官网:https://dify.ai/zh生成式 AI 应用创新引擎开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。 Dify安装脚本 目录创建 mkdir -p /data/yunxinai &&a…...
Android 简化图片加载与显示——使用Coil和Kotlin封装高效工具类
为了简化使用Coil加载网络图片和GIF的过程,我们可以封装一个工具类。这个工具类将包括初始化ImageLoader的方法、加载图片到ImageView的方法,以及可能的其他便捷方法,如加载圆形图片、设置占位图等。下面是一个示例: 首先&#x…...
CUDA 学习(2)——CUDA 介绍
GeForce 256 是英伟达 1999 年开发的第一个 GPU,最初用作显示器上渲染高端图形,只用于像素计算。 在早期,OpenGL 和 DirectX 等图形 API 是与 GPU 唯一的交互方式。后来,人们意识到 GPU 除了用于渲染图形图像外,还可以…...
棱镜七彩受邀出席“供应链安全国家标准贯标应用深度行”活动并做主题分享
近日,“供应链安全国家标准贯标应用深度行”活动在北京顺利举办,此次活动汇聚了行业内的众多专家和企业代表,深入探讨了供应链安全国家标准的制定与实施路径。棱镜七彩副总裁黄浩东受邀出席,并发表了题为《国家标准实施路径下的企…...
Vue3项目中的.vscode文件夹
.vscode 文件夹主要用于存放与 Visual Studio Code(VS Code)编辑器相关的项目配置文件,这些文件能让项目在 VS Code 里的开发体验更加个性化和高效。 extensions.json 在 .vscode 文件夹中,extensions.json 文件的作用是列出项目…...
系统转换、系统维护、净室软件工程、构件软件工程(高软51)
系列文章目录 系统转换、系统维护、净室软件工程、构件软件工程 文章目录 系列文章目录前言一、系统转换二、系统维护三、净室软件工程四、基于构件的软件工程总结 前言 本节讲明遗留系统的系统转换、系统维护、净室软件工程、基于构件软件工程相关知识。 一、系统转换 就是讲…...
K8S学习之基础四十四:k8s中部署Kibana
在Kubernetes集群中安装Kibana通常涉及使用Helm Chart或直接使用Kubernetes Manifest文件。以下是使用Helm Chart安装Kibana的步骤: 添加Elastic Helm仓库 首先,添加Elastic的Helm仓库: bash 复制 helm repo add elastic https://helm.ela…...
联核防爆无人叉车:高危环境中的安全搬运守护者
联核防爆AGV无人叉车是专为易燃易爆环境设计的智能搬运设备,其特点、功能与应用场景均围绕“安全”与“智能”核心展开:联核科技官网-AGV叉车十大品牌-无人叉车厂家-自动化叉车-智能搬运码垛机器人-智能叉车系统解决方案专家 一、核心特点 防爆设计电气…...
23种设计模式-责任链(Chain of Responsibility)设计模式
责任链设计模式 🚩什么是责任链设计模式?🚩责任链设计模式的特点🚩责任链设计模式的结构🚩责任链设计模式的优缺点🚩责任链设计模式的Java实现🚩代码总结🚩总结 🚩什么是…...
Linux使用集群服务器查看已安装conda环境,且环境名无显示、系统环境混乱等问题
一、问题 在使用集群服务器前可以查看导入,module load不需要安装。我都是自己重新下载Anaconda3-2024.10-1-Linux-x86_64.sh,然后安装,导致混乱。下面是情况 1.创建的环境名跑到目录下了 2.多个base,且有个base无显示 二、解决办法 1.删…...
python蓝桥杯刷题的重难点知识笔记
1、datetime模块 datetime.date:代表日期,包含年、月、日信息。datetime.time:代表时间,包含时、分、秒、微秒信息。datetime.datetime:结合了日期和时间,包含年、月、日、时、分、秒、微秒信息。datetime.…...
Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现
一、前言 在移动互联网蓬勃发展的今天,视频播放功能已成为众多Android应用的核心特性之一。面对多样化的视频格式和传输协议,开发一款高效、稳定的视频播放器是许多开发者追求的目标。FLV(Flash Video)格式,尽管随着H…...
Redmi Note 11 T pro + 刷入 LinegaOs 22.1 记录 手机已经解锁bl.
Redmi Note 11 T pro 刷入 LinegaOs 22.1 记录 手机已经解锁bl. 获取LIneagaOS源码, 以及https://github.com/xiaomi-mediatek-devs 这个组织提供的代码,非常感谢 环境要求: ubuntu 22.04 需要准备的依赖 sudo apt install git curl vim…...
《Operating System Concepts》阅读笔记:p483-p488
《Operating System Concepts》学习第 40 天,p483-p488 总结,总计 6 页。 一、技术总结 1.object storage (1)object storage 管理软件 Hadoop file system(HDFS)、Ceph。 二、英语总结(生词:1) 1.commodity (1)commodity: com-(“tog…...
极光优化PLO-Transformer-LSTM多变量时序
极光优化算法(PLO)于2024年8月发表于SCI期刊《Neurocomputing》,利用算法极光优化算法PLO优化Transformer-LSTM模型,同时提供与未优化模型的对比,包含柱状图、两张雷达图、二维散点图等等。 (一)LSTM模型LSTM是一种在时…...
Android开发:基于 Kotlin 协程的设备指令控制工具类设计与实现
在安卓开发中,设备控制是一个常见的需求。本文将介绍如何使用 Kotlin 协程实现一个高效、健壮的设备指令控制工具类。该工具类支持指令队列、重试机制、状态管理等功能,并适配安卓平台,确保生命周期管理和主线程安全性。通过本文,…...
SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景
以下是 SQL Server 中常见的数据类型及其详细解释、内存占用和适用场景: 数据类型类别数据类型解释内存占用适用场景整数类型bigint用于存储范围较大的整数,范围是 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807)8 字节需要…...
Android Kotlin 权限工具类封装:简化动态权限管理
在 Android 开发中,动态权限管理是一个常见的需求,尤其是在高版本 Android 系统中,权限管理变得更加严格和复杂。为了简化权限申请的流程,减少重复代码,本文将介绍如何使用 Kotlin 封装一个高效、易用的权限工具类。 权…...
数据结构每日一题day3(顺序表)★★★★★
题目描述:顺序表L的元素递增有序排列,设计一个算法在插入元素x后保持该顺序表仍然递增有序排列,插入成功后返回插入元素所在位置,不成功返回-1 算法思想:在递增有序的顺序表中插入元素 x 并保持有序性,步骤如下: 合法…...
Git合并删除原理
如果有 A 分支,从 A 分支上新建 B 分支,B 分支做出修改合并到 A 分支,然后删除 B 分支,A 分支还有没有 B 分支修改的内容 关键原理: 合并的本质是提交历史的整合 1. 合并操作会将 B 的修改永久写入 A 的历史 当 …...
Git 是什么
第一步:想象一个场景——写作文的烦恼 假设你在电脑上写一篇作文,反复修改了好几次。突然发现 改错了 想回到之前的某版,但你已经覆盖保存了。这时候你可能会想: 😭 “要是能回到昨天的版本就好了!”&a…...
基于javaweb的SpringBoot智能无人仓库管理设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
python处理音频相关的库
1 音频信号采集与播放 pyaudio import sys import pyaudio import wave import timeCHUNK 1024 FORMAT pyaudio.paInt16 CHANNELS 1#仅支持单声道 RATE 16000 RECORD_SECONDS 3#更改录音时长#录音函数,生成wav文件 def record(file_name):try:os.close(file_…...
JNI 本地方法调用 Java 静态方法 和 实例方法对比;通过本地方法创建 Java 对象;本地方法访问 Java 数组元素;本地方法错误返回给 Java
以下是针对 Java JNI 的详细代码示例和对比分析: 一、调用 Java 静态方法 vs 实例方法 Java 示例类 public class JNIExample {public static void staticMethod(int value) {System.out.println("Static Method: " value);}public void instanceMetho…...
AWS Lambda 深度解析:构建高效无服务器应用的实战指南
在2025年的云计算生态中,AWS Lambda 作为无服务器计算的代表,以其按需执行、高可扩展性和零运维成本的优势,成为开发者构建现代应用的首选。无论是快速原型开发还是生产级系统,Lambda 都能大幅提升效率。然而,如何充分…...
网络爬虫-2:基础与理论
一.同步加载与异步加载 1.1同步加载定义: 页面所有内容一起加载出来,当某一个数据加载有问题,整个页面就不会加载出来(如HiFiNi音乐网站),所以又叫阻塞模式 1.2爬取步骤: 看netword->document 2.1异步加载定义: 数据是分开加载的,当某一份数据有异常时,不影响其他数据…...
从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.2多头注意力扩展与掩码机制(因果掩码与填充掩码)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.1.2 多头注意力扩展与掩码机制(`因果掩码与填充掩码`)1. 多头注意力机制:分治策略的数学实现1.1 多头注意力核心公式2. 逐行代码实现2.1 多头拆分与合并3. 掩码机制:注意力控制的核心技术3.1 因果…...
Oracle 19C 备份
在 Oracle 19c 中,备份数据库通常使用 RMAN(Recovery Manager) 工具,它是 Oracle 提供的官方备份和恢复工具。以下是通过 RMAN 备份 Oracle 19c 数据库的详细步骤和命令。 一、RMAN 基本概念 RMAN 是 Oracle 的备份和恢复工具&am…...
