当前位置: 首页 > news >正文

vuedraggable固定某一item的记录

文章目录

  • 基础用法
    • 第一种
    • 第二种
  • 限制item
    • diaggable
    • 重新排序
      • 交换移动的两个元素的次序
      • 每次都重置item的index


基础用法

第一种

<draggable v-model="list" :options="dragOptions"><div class="item" v-for="item in list" :key="item.id">{{ item.name }}</div>
</draggable>
list: [{ id: 1, name: 'Item 1' },{ id: 2, name: 'Item 2' },{ id: 3, name: 'Item 3' },{ id: 4, name: 'Item 4' },{ id: 5, name: 'Item 5' },{ id: 6, name: 'Item 6' },],dragOptions: {group: 'items',// 在拖拽过程中检查每个元素的 draggable 属性draggable: '.draggable',},

第二种

这个版本是需要npm i vuedraggable@4.1.0 。就很奇怪,npm上搜不到这个版本,即使用vuedraggable@latest也都是2.x的版本,但用npm view vuedraggable,能看到next是4.1.0。但你偏偏能安装上去,还能正常显示使用,就绝啦。如果是2.x的版本会报错 Cannot read properties of undefined (reading ‘header’),而且页面也不会显示。超好奇是从哪知道的4.1.0的用法呀,有人知道吗,可以教教我吗

<draggable
class="image-list" v-model="list"item-key="id"chosen-class="chosenClass"animation="300"forceFallback="true"><template #item="{ element }"><div>{{ element.name }}</div></template></draggable>list: [{ id: 1, name: 'Item 1' },{ id: 2, name: 'Item 2' },{ id: 3, name: 'Item 3' },{ id: 4, name: 'Item 4' },{ id: 5, name: 'Item 5' },{ id: 6, name: 'Item 6' },],

限制item

vuedraggable拖拽的时候,如果想要某个item不能拖动,有两种方式

diaggable

<draggable v-model="list" :options="dragOptions"><div class="item" v-for="item in list" :key="item.id" :draggable="!item.disableDrag" :class="{ 'draggable': !item.disableDrag }">{{ item.name }}</div>
</draggable>
list: [{ id: 1, name: 'Item 1', disableDrag: false },{ id: 2, name: 'Item 2', disableDrag: true },{ id: 3, name: 'Item 3', disableDrag: false },{ id: 4, name: 'Item 4', disableDrag: false },{ id: 5, name: 'Item 5', disableDrag: false },{ id: 6, name: 'Item 6', disableDrag: false },],dragOptions: {group: 'items',// 在拖拽过程中检查每个元素的 draggable 属性draggable: '.draggable',},

重新排序

使用自带的参数,这个参数能使该item不能被拖动,但是由于vuedraggable移动的时候是把移动的item拖到对应位置,其他item依次往前移,所以会导致导致不能移动的item会被动移动。例如123456,将1移动到4的位置,就会变为234156,而不是我个人以为的423156

交换移动的两个元素的次序

这个方式有bug就是元素不能斜着拖动,因为move会被触发多次,因为斜着拖到会碰到其他item。目前没想到怎么优化

<draggable v-model="list" :move='handleMove' @end='handleEnd' :options="dragOptions"><div class="item" v-for="item in list" :key="item.id">{{ item.name }}</div>
</draggable>
list: [{ id: 1, name: 'Item 1' },{ id: 2, name: 'Item 2' },{ id: 3, name: 'Item 3' },{ id: 4, name: 'Item 4' },{ id: 5, name: 'Item 5' },{ id: 6, name: 'Item 6' },],dragOptions: {group: 'items',// 在拖拽过程中检查每个元素的 draggable 属性draggable: '.draggable',},handleEnd(event) {console.log(event, this.list);const { oldIndex, newIndex } = event;if (oldIndex !== newIndex) {// 将1换到4的位置this.list.splice(newIndex, 1, this.startItem);// 将4换到1的位置this.list.splice(oldIndex, 1, this.endItem);}},handleMove(a, b) {console.log(a, b);if (a.draggedContext.element.id === 2 || a.relatedContext.element.id === 2) {// false则不能拖到return false;}const oldIndex = a.draggedContext.index;const newIndex = a.draggedContext.futureIndex;if (oldIndex !== newIndex) {// 如果不在这里存储一下的话,end的方法拿不到。存储移动的元素和目的地的元素this.startItem = JSON.parse(JSON.stringify(a.draggedContext.element));this.endItem = JSON.parse(JSON.stringify(a.relatedContext.element));}return true;},

每次都重置item的index

这是看的别的方法,贼拉好用

<draggable v-model="list" :options="dragOptions"><div class="item" v-for="item in list" :key="item.id">{{ item.name }}</div>
</draggable>
list: [{ id: 1, name: 'Item 1' },{ id: 2, name: 'Item 2' },{ id: 3, name: 'Item 3' },{ id: 4, name: 'Item 4' },{ id: 5, name: 'Item 5' },{ id: 6, name: 'Item 6' },],dragOptions: {group: 'items',// 在拖拽过程中检查每个元素的 draggable 属性draggable: '.draggable',},watch: {list: {immediate: true,deep: true,handler(newV, oldV) {console.log(newV, oldV);const targetIndex = newV.findIndex(i => i.id === 2);console.log(targetIndex);// 找到item且item的位置变了if (targetIndex !== -1 && targetIndex !== 1) {// 找到id为2的元素,删除const targetItem = newV.splice(targetIndex, 1)[0];// 再index为1的地方插入。即可保证该数据用于处于1的位置newV.splice(1, 0, targetItem);}}}}

相关文章:

vuedraggable固定某一item的记录

文章目录 基础用法第一种第二种 限制itemdiaggable重新排序交换移动的两个元素的次序每次都重置item的index 基础用法 第一种 <draggable v-model"list" :options"dragOptions"><div class"item" v-for"item in list" :key…...

我的新书《青少年Python趣学编程(微课视频版)》出版了!

&#x1f389; 激动人心的时刻来临啦&#xff01; &#x1f389; 小伙伴们久等了&#xff0c;我的第一本新书 《青少年Python趣学编程&#xff08;微课视频版&#xff09;》 正式出版啦&#xff01; &#x1f4da;✨ 在这个AI时代&#xff0c;市面上的Python书籍常常过于枯燥&…...

前端开发入门一

前端开发入门一 已经有若干年没有web相关的代码了&#xff0c;以前主要是用C/C编写传统的GUI程序&#xff0c;涉及界面、多线程、网络等知识点。最近准备开发一个浏览器插件&#xff0c;才发现业界已经换了天地&#xff0c;只得重新开始学习了&#xff0c;好在基本的学习能力还…...

Linux(Centos 7.6)命令详解:head

1.命令作用 将每个文件的前10行打印到标准输出(Print the first 10 lines of each FILE to standard output) 2.命令语法 Usage: head [OPTION]... [FILE]... 3.参数详解 OPTION: -c, --bytes[-]K&#xff0c;打印每个文件的前K字节-n, --lines[-]&#xff0c;打印前K行而…...

HTTP请求X-Forwarded-For注入

场景描述 当你对用户网站进行的爆破或者sql注入的时候,为了防止你影响服务器的正常工作,会限制你访问,当你再次访问时,会提示你的由于你的访问频过快或者您的请求有攻击行为,限制访问几个小时内不能登陆,并且重定向到一个错误友好提示页面。 由此可以发起联想?http是无状…...

《生息之地》入围柏林主竞赛,总制片人蒋浩助力青年导演走向国际

当地时间2月13日&#xff0c;第75届柏林国际电影节正式开幕。凤凰传奇影业出品的电影《生息之地》已入围主竞赛单元&#xff0c;是本届电影节最受瞩目的华语作品之一&#xff0c;电影总制片人蒋浩、导演霍猛、监制姚晨等主创一同亮相开幕红毯。《生息之地》是导演霍猛继《过昭关…...

实践记录--电脑故障的问题定位和处理回顾--磁盘故障已解决

快速回顾 01-关于系统异常启动的展示信息&#xff0c;目前已经可以通过拍照翻译的方式辅助理解&#xff1b; 02-关于固态磁盘的故障定位&#xff0c;可以尝试通过SSD-Z工具查看分区引导记录信息&#xff0c;通过diskgenius工具进行坏道检测和修复&#xff1b; 03-体验了diskge…...

uni-app 学习(一)

一、环境搭建和运行 &#xff08;一&#xff09;创建项目 直接进行创建 &#xff08;二&#xff09;项目结构理解 pages 是页面 静态资源 打包文件&#xff0c;看我们想输出成什么格式 app.vue 页面的入口文件 main.js 是项目的入口文件 存放对打包文件的配置 pages 存放整…...

Ubuntu 22.04 Desktop企业级基础配置操作指南

一、网络配置 cd /etc/netplan vi 00-installer-config.yaml 设置如下所示: network:version: 2ethernets:eth0: # 替换为你的实际网络接口名称,如 ens33, enp0s3 等dhcp4: noaddresses:- 192.168.1.100/24 # 静态IP地址和子网掩码gateway4: 192.168.1.254 # 网关地址n…...

QILSTE H4-105LB/5M高亮蓝光LED灯珠 发光二极管LED

H4-105LB/5M&#xff1a;高亮蓝光LED的复杂特性与突发性挑战 在现代电子设备的复杂世界中&#xff0c;H4-105LB/5M型号的高亮蓝光LED以其独特的参数和复杂的特性脱颖而出。这款LED不仅在尺寸上做到了极致精巧&#xff0c;还在光电参数、可靠性测试和实际应用中展现出令人困惑的…...

【Elasticsearch】Elasticsearch检索方式全解析:从基础到实战(一)

文章目录 引言Elasticsearch检索方式概述两种检索方式介绍方式一&#xff1a;通过REST request uri发送搜索参数方式二&#xff1a;通过REST request body发送搜索参数&#xff08;1&#xff09;基本语法格式&#xff08;2&#xff09;返回部分字段&#xff08;3&#xff09;ma…...

封装neo4j的持久层和服务层

目录 持久层 mp 模仿&#xff1a; 1.抽取出通用的接口类 2.创建自定义的repository接口 服务层 mp 模仿&#xff1a; 1.抽取出一个IService通用服务类 2.创建ServiceImpl类实现IService接口 3.自定义的服务接口 4.创建自定义的服务类 工厂模式 为什么可以使用工厂…...

基于Spring Boot的宠物爱心组织管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

error: conflicting types for ‘SSL_SESSION_get_master_key’

$ make make all-am make[1]: Entering directory ‘/home/linuxuser/tor’ CC src/lib/tls/libtor_tls_a-tortls_openssl.o In file included from src/lib/tls/tortls_openssl.c:61: ./src/lib/tls/tortls_internal.h:55:8: error: conflicting types for ‘SSL_SESSION_get_…...

测试狗参加国家超级计算成都中心2024年度用户大会

近日&#xff0c;国家超级计算成都中心举办了“数启新篇算领未来”2024年度用户大会。这场盛会汇聚了来自政府部门、科研院所及企业界的百余位领导专家及用户代表&#xff0c;共同探讨高性能计算在科技创新中的赋能作用&#xff0c;探索超算融合领域的创新发展之路。其中&#…...

从2025年起:数字化建站PHP 8.1应成为建站开发的基准线

在数字化浪潮席卷全球的今天,PHP语言仍然保持着Web开发领域的核心地位。根据W3Techs最新统计,PHP驱动着全球78.9%的已知服务端网站。当时间指向2025年,这个拥有28年历史的编程语言将迎来新的发展里程碑——PHP 8.1版本应成为网站开发的最低基准要求,这不仅是技术迭代的必然…...

飞牛OS与昔映OS深度对比

无论是备份珍贵的照片、视频&#xff0c;搭建个人专属的影视库&#xff0c;还是实现高效的文件共享与协作&#xff0c;NAS 都能成为我们的得力助手。而在众多的 NAS 系统中&#xff0c;飞牛 OS 与昔映 OS 凭借各自的特点&#xff0c;吸引了不少用户的关注。今天&#xff0c;咱们…...

vscode本地和远程对应分支没有同步提交数量

1、问题&#xff1a; 下载了最新的vscode后发现本地分支不显示跟远端分支的提交数量&#xff0c;每次都要手动拉取&#xff0c;如下图 2、解决 在vscode点击左下角设置图标&#xff0c;选择settings&#xff0c;直接搜索git的配置 果然自动拉取的配置设置为false,调整为true即…...

通过docker启用rabbitmq插件

创建文件&#xff0c;docker-compose.yml services:rabbitmq:image: rabbitmq:4.0-managementports:- "5672:5672"- "15672:15672"volumes:- ./data/rabbitmq/data:/var/lib/rabbitmq # 持久化数据- ./data/rabbitmq/plugins/rabbitmq_delayed_message_ex…...

DeepSeek计算机视觉(Computer Vision)基础与实践

计算机视觉(Computer Vision)是人工智能领域的一个重要分支,专注于让计算机理解和处理图像和视频数据。计算机视觉技术广泛应用于图像分类、目标检测、图像分割、人脸识别等场景。DeepSeek提供了强大的工具和API,帮助我们高效地构建和训练计算机视觉模型。本文将详细介绍如…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...