vue實現(xiàn)列表拖拽排序的示例代碼
更新時間:2022年04月08日 09:18:00 作者:最愛松露巧克力
本文主要介紹了vue實現(xiàn)列表拖拽排序的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
本文主要介紹了vue實現(xiàn)列表拖拽排序的示例代碼,具體如下:

<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; // 開始排序時按住的舊數(shù)據(jù)
newData: any = null; // 拖拽過程的數(shù)據(jù)
// 列表數(shù)據(jù)
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]
// 刪除老的節(jié)點
newItems.splice(oldIndex, 1)
// 在列表中目標位置增加新的節(jié)點
newItems.splice(newIndex, 0, this.oldData)
this.dataList = [...newItems]
}
}
// 拖動事件(主要是為了拖動時鼠標光標不變?yōu)榻梗?
dragover(e: any) {
e.preventDefault()
}
};
</script>
<style>
.sort-move {
transition: transform 0.3s;
}
</style>到此這篇關于vue實現(xiàn)列表拖拽排序的示例代碼的文章就介紹到這了,更多相關vue 列表拖拽排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
elementUI表格多選框this.$refs.xxx.toggleRowSelection無效問題
這篇文章主要介紹了elementUI表格多選框this.$refs.xxx.toggleRowSelection無效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

