vue框架实现列表拖拽并可排序的代码是什么
Admin 2022-09-08 群英技术资讯 279 次浏览
本文主要介绍了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>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在vue项目中我们经常遇到图标,下面这篇文章主要给大家介绍了关于如何基于Vue实现自定义组件的方式引入图标的相关资料,文章通过示例代码介绍的非常详细,需要的朋友可以参考下
本篇文章给大家带来了关于JavaScript的相关知识,reduce是数组原型对象上的一个方法,可以帮助我们操作数组。本文将和大家分享4个关于JavaScript中数组reduce的用法,希望对大家有所帮助。
本文给大家分享的是关于nuxt中引入组件的操作和引入公共样式的操作,另外还有在nuxt项目中使用component组件的介绍,感兴趣的朋友也可以了解看看,对新手学习nuxt引入组件和使用组件有一定的帮助,那么接下来就跟随小编一起了解一下吧。
目录前言一、 toString()二、join()三、 JSON.stringify()四、sort()五、filter()总结前言在 js 中是不能直接用 == 或者 === 来比较两个数组是否相等,那就需要对数组的值进行比较。下面各种方法,要根据具体情况来使用。一、 toString()当两个数组元素类型相同,顺序
这篇文章主要介绍了JS前端基于canvas给图片添加水印,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008