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 watch监控对象的简单方法示例
Jan 07 Vue.js
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 Vue.js
vue项目实现分页效果
Mar 24 Vue.js
关于Vue Router的10条高级技巧总结
May 06 Vue.js
使用这 6个Vue加载动画库来减少我们网站的跳出率
May 18 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
vue使用watch监听属性变化
Apr 30 Vue.js
Vue3实现简易音乐播放器组件
Aug 14 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表单转换textarea换行符的方法
2010/09/10 PHP
php递归创建目录的方法
2015/02/02 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
JS 有名函数表达式全面解析
2010/03/19 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
2018/02/02 jQuery
JS实现方形抽奖效果
2018/08/27 Javascript
如何运行Python程序的方法
2013/04/21 Python
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
python属于跨平台语言码
2020/06/09 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
党校学习个人总结
2015/02/15 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
导游词之昭君岛
2020/01/17 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android