vue实现跨区域拖放

Posted web半晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue实现跨区域拖放相关的知识,希望对你有一定的参考价值。


1、关键代码

dragend(item) {
	console.log(item);
	if (this.oldItem != this.newItem) {
		let oldIndex = this.List.indexOf(this.oldItem);
		let newIndex = this.List.indexOf(this.newItem);

		let oldflag = false
		let newflag = false

		if (oldIndex === -1) {
			oldflag = true
			oldIndex = this.list.indexOf(this.oldItem);
		}

		if (newIndex === -1) {
			newflag = true
			newIndex = this.list.indexOf(this.newItem);
		}

		let newList = [...this.List]; // 中间数组,用于交换两个节点
		let newlist = [...this.list]; // 中间数组,用于交换两个节点

		if (!oldflag) {
			newList.splice(oldIndex, 1);
		} else {
			newlist.splice(oldIndex, 1);
		}

		if (!newflag) {
			newList.splice(newIndex, 0, this.oldItem);
		} else {
			newlist.splice(newIndex, 0, this.oldItem);
		}

		// 删除老的节点
		// newList.splice(oldIndex, 1);
		// // 在列表目标位置增加新的节点
		// newList.splice(newIndex, 0, this.oldItem);
		// // 更新this.List,触发transition-group的动画效果
		this.List = [...newList];
		this.list = [...newlist];
	}
}

2、完整代码

gitee(码云) - mj01分支 - dragAndDrop 文件

以上是关于vue实现跨区域拖放的主要内容,如果未能解决你的问题,请参考以下文章

vue+element实现跨区域复制拖放

在两个片段之间拖放?

如何使用 vue 3 组合 API 实现 html 拖放

撸一个vue项目实现拖拽功能

撸一个vue项目实现拖拽功能

sortablejs 支持 iframe 跨域拖拽