Vue中拖动排序功能,引入SortableJs,前端拖动排序。

背景:

作为一名前端开发人员,在工作中难免会遇到拖拽功能,分享一个github上一个不错的拖拽js库,能满足我们在项目开发中的需要,支持Vue和React,下面是我在vue后台项目中中使用SortableJS的使用详细流程;

安装:

npm install sortablejs

需要使用的页面引入

import Sortable from "sortablejs";

js代码

在页面生命周期mounted()的时候,调用初始化拖拽实例方法:

 mounted() {this.test();//方法名可自定义},

页面methods中:  

 // 拖拽test() {var that = this;var el = document.getElementById("items");// 常用new Sortable(el, {draggable: ".listitem",animation: 500,onEnd: function (evt) {setTimeout(() => {console.log('evt');console.log(evt);// 处理出排序之后的data数据that.arr.splice(evt.newIndex,0,that.arr.splice(evt.oldIndex, 1)[0]); //在数据中,将元素从旧位置删除,再新增到新位置console.log(arr)}});},

里面的配置:draggable: ".listitem"  将这个改成你需要拖动的实际元素的class,注意不与别的地方的元素重复. 

以上代码在拖拽完成后会得到一个evt对象.里面包含了一些信息:

里面有你拖动的这个元素拖动前的索引oldIndex和拖动后的索引newIndex,于是我利用这两个索引将数组数组进行处理,在后续进行调用接口保存顺序。

 that.arr.splice(evt.newIndex, 0,that.arr.splice(evt.oldIndex, 1)[0])

以上代码的逻辑:

先将被拖动的项从原数组中删除,而splice方法会返回一个数组,这个数组只有一项,就是被删除项,于是,再将被删除项添加到他新位置上就好了.

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小数据 vs 大数据:为AI另辟蹊径的可操作数据

在人工智能背景下,您可能已听说过“大数据”这一流行语,那“小数据”这一词呢,您有听说过吗?无论您听过与否,小数据都无处不在:线上购物体验、航空公司推荐、天气预报等均依托小数据。小数据即一种采用可访…

手机商城网站的分析与设计(论文+源码)_kaic

目录 摘 要 1 1 绪论 2 1.1选题背景意义 2 1.2国内外研究现状 2 1.2.1国内研究现状 2 1.2.2国外研究现状 3 1.3研究内容 3 2 网上手机商城网站相关技术 4 2.1.NET框架 4 2.2Access数据库 4 2.3 JavaScript技术 4 3网上手机商城网站分析与设…

RISC-V公测平台发布 · 7-zip 测试

简介 7-Zip 是一个开源的压缩和解压缩工具,具有高压缩比和快速解压缩的特点。除了普通的文件压缩和解压缩功能之外,7-Zip 还提供了基准测试功能,通过压缩和解压缩大型文件来评估系统的处理能力和性能。 7-Zip 提供了一种在不同压缩级别和多…

uniapp条形码实现

条形码在实际应用场景是经常可见的。 这里教大家如何集成uniapp条形码。条形码依赖类库JsBarcode. 下载JsBarcode源码,对CanvasRenderer进行了改进兼容uniapp。 import merge from "../help/merge.js"; import {calculateEncodingAttributes, getTotal…

【探索Linux】—— 强大的命令行工具 P.3(Linux开发工具 vim)

阅读导航 前言vim简介概念特点 vim的相关指令vim命令模式(Normal mode)相关指令插入模式(Insert mode)相关指令末行模式(last line mode)相关指令 简单vim配置(附配置链接)温馨提示 前言 前面我们讲了C语言的基础知识,也了解了一些数据结构&…

MongoDB:数据库初步应用

一.连接MongoDB 1.MongoDBCompass连接数据库 连接路径:mongodb://用户名:密码localhost:27017/ 2.创建数据库(集合) MongoDB中数据库被称为集合. MongoDBCompass连接后,点击红色框加号创建集合,点击蓝色框加号创建文档(数据表) 文档中的数据结构(相当于表中的列)设计不用管…

《零基础7天入门Arduino物联网-04》电路基础知识上

配套视频课程:《零基础学Arduino物联网,入门到进阶》 配套课件资料获取:微联实验室 配套学习套件购买:淘宝搜索店铺【微联实验室】 直流电与交流电 直流电(DC) 是指电流的方向始终保持不变的电流。这意味着…

深入源码分析kubernetes informer机制(二)Reflector

[阅读指南] 这是该系列第二篇 基于kubernetes 1.27 stage版本 为了方便阅读,后续所有代码均省略了错误处理及与关注逻辑无关的部分。 文章目录 Reflector是什么整体结构工作流程list拉取数据缓存resync操作watch监听操作 总结 Reflector是什么 reflector在informer…

nginx部署时http接口正常,ws接口404

可以这么配置 map $http_upgrade $connection_upgrade {default upgrade; close; }upstream wsbackend{server ip1:port1;server ip2:port2;keepalive 1000; }server {listen 20038;location /{ proxy_http_version 1.1;proxy_pass http://wsbackend;proxy_redirect off;proxy…

Android-网络访问技术Retrofit浅析

Retrofit是一种基于注解的网络请求库,专门用于在Android应用中进行网络访问。它使用简洁的方式定义了网络请求的接口,并自动将请求结果解析为Java对象。Retrofit的核心原理是利用了Java的动态代理技术,将网络请求接口的注解信息转化为具体的网…

软件压力测试对软件产品起到什么作用?

一、软件压力测试是什么? 软件压力测试是一种通过模拟正常使用环境中可能出现的大量用户和大数据量的情况,来评估软件系统在压力下的稳定性和性能表现的测试方法。在软件开发过程中,经常会遇到一些性能瓶颈和稳定性问题,而软件压力测试的作…

星星之火:国产讯飞星火大模型的实际使用体验(与GPT对比)

#AIGC技术内容创作征文|全网寻找AI创作者,快来释放你的创作潜能吧!# 文章目录 1 前言2 测试详情2.1 文案写作2.2 知识写作2.3 阅读理解2.4 语意测试(重点关注)2.5 常识性测试(重点关注)2.6 代码…