vue实现列表拖拽排序的示例代码


Posted in Vue.js onApril 08, 2022

 本文主要介绍了vue实现列表拖拽排序的示例代码,具体如下:

vue实现列表拖拽排序的示例代码

<template>
  <div class="test_wrapper" @dragover="dragover($event)">
    <transition-group class="transition-wrapper" name="sort">
      <div v-for="(item) in dataList" :key='item.id' class="sort-item"
        :draggable="true"
        @dragstart="dragstart(item)"
        @dragenter="dragenter(item,$event)"
        @dragend="dragend(item,$event)"
        @dragover="dragover($event)"
      >
        {{ item.label }}
      </div>
    </transition-group>
  </div>
</template>
 
<script lang="ts">
  import {Vue, Component, Prop, Watch} from "vue-property-decorator";
  import { addWebsite } from '@/api'
  @Component({
    components: {}
  })
  export default class Test extends Vue {
 
    oldData: any = null; // 开始排序时按住的旧数据
    newData: any = null; // 拖拽过程的数据
 
    // 列表数据
    dataList:any = [
      { id:1,label:'测试一号' },
      { id:2,label:'测试二号' },
      { id:3,label:'测试三号' },
      { id:4,label:'测试四号' },
    ];
 
    dragstart(value: any) {
      this.oldData = value
    }
 
    // 记录移动过程中信息
    dragenter(value: any, e: any) {
      this.newData = value
      e.preventDefault()
    }
 
    // 拖拽最终操作
    dragend(value: any, e: any) {
      if (this.oldData !== this.newData) {
        let oldIndex = this.dataList.indexOf(this.oldData)
        let newIndex = this.dataList.indexOf(this.newData)
        let newItems = [...this.dataList]
        // 删除老的节点
        newItems.splice(oldIndex, 1)
        // 在列表中目标位置增加新的节点
        newItems.splice(newIndex, 0, this.oldData)
        this.dataList = [...newItems]
      }
    }
 
 
    // 拖动事件(主要是为了拖动时鼠标光标不变为禁止)
    dragover(e: any) {
      e.preventDefault()
    }
 
 
  };
</script>
<style>
.sort-move {
  transition: transform 0.3s;
}
</style>

到此这篇关于vue实现列表拖拽排序的示例代码的文章就介绍到这了,更多相关vue 列表拖拽排序内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 Vue.js
Vue router安装及使用方法解析
Dec 02 Vue.js
Vue实现简单购物车功能
Dec 13 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
vue实现可以快进后退的跑马灯组件
Apr 08 #Vue.js
Axios代理配置及封装响应拦截处理方式
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 #Vue.js
vue实现拖拽交换位置
Apr 07 #Vue.js
Vue.Draggable实现交换位置
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
vue cli4中mockjs在dev环境和build环境的配置详情
You might like
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
利用Python演示数型数据结构的教程
2015/04/03 Python
用python实现百度翻译的示例代码
2018/03/09 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
Python 实现自动登录+点击+滑动验证功能
2020/06/10 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
python实现银行账户系统
2021/02/22 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
《果园机器人》教学反思
2014/04/13 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL