vue+transition-group实现拖动排序
Posted web半晨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue+transition-group实现拖动排序相关的知识,希望对你有一定的参考价值。
<transition-group id='app' name="drog" tag="ul">
<div draggable="true" v-for="(item, index) in lists" @dragstart="dragStart($event, index)" @dragover="allowDrop" @drop="drop($event, index)" v-bind:key="item">{{item}}</div>
</transition-group>
new Vue({
el: '#app',
data: {
lists: ['1: apple', '2: banana', '3: orange', '4: melon']
},
methods: {
// 取消默认行为
allowDrop(e){
e.preventDefault();
},
// 开始拖动
dragStart(e, index){
let tar = e.target;
e.dataTransfer.setData('Text', index);
if (tar.tagName.toLowerCase() == 'li') {
// console.log('drag start')
// console.log('drag Index: ' + index)
}
},
// 放置
drop(e, index){
this.allowDrop(e);
// console.log('drop index: ' + index);
//使用一个新数组重新排序后赋给原变量
let arr = this.lists.concat([]),
dragIndex = e.dataTransfer.getData('Text');
temp = arr.splice(dragIndex, 1);
arr.splice(index, 0, temp[0]);
// console.log('sort');
this.lists = arr;
}
}
});
以上是关于vue+transition-group实现拖动排序的主要内容,如果未能解决你的问题,请参考以下文章
vue的transition-group实现列表的添加和删除动画
vue.draggable拖拽组件中用transition-group包裹拖拽组件了,拖拽还是没有动画?
Vue.js 源码分析(二十九) 高级应用 transition-group组件 详解
vue的transition-group 下面每个元素分别执行动画