vue clone html,vue.draggable的clone拷贝实现常用菜单功能

vue.draggable的clone拷贝实现常用菜单功能

vue.draggable的clone拷贝实现常用菜单功能,从一个拖拽组拖动到另外一个组而原来的那种组的元素不移除。

先看例子

从左边的元素拖动到右边试试看,然后再从右边拖回到左边。

例子

相关属性

属性说明

clone:options="{group:{name: 'itxst',pull:'clone'},sort: true}"

group属性的clone表示允许克隆被拖动的元素>

movemove事件用来控制那个元素不允许被拖拽和获取当前拖动元素的对象

endend拖拽结束事件,用来判断是否已经存在对象

完整代码

clone例子,左边往右边拖动试试看
{{item.name}}
{{item.name}}

//导入draggable组件

import draggable from 'vuedraggable'

export default {

//注册draggable组件

components: {

draggable,

},

data() {

return {

//定义要被拖拽对象的数组

arr1:[

{ id: 1, name: 'www.itxst.com(不允许停靠)' },

{ id: 2, name: 'www.jd.com' },

{ id: 3, name: 'www.baidu.com' },

{ id: 5, name: 'www.google.com' },

{ id: 4, name: 'www.taobao.com(不允许拖拽)' }

],

arr2:[

{ id: 11, name: '常用菜单' },

],

moveId:-1

};

},

methods: {

//左边往右边拖动时的事件

end1(e){

console.log(e)

var that=this;

var items=this.arr2.filter(function(m){

return m.id==that.moveId

})

//如果左边

if(items.length<2) return;

this.arr2.splice(e.newDraggableIndex, 1)

},

//右边往左边拖动时的事件

end2(e){

console.log(e)

var that=this;

var items=this.arr1.filter(function(m){

return m.id==that.moveId

})

//如果左边

if(items.length<2) return;

this.arr1.splice(e.newDraggableIndex, 1)

},

//move回调方法

onMove(e,originalEvent){

this.moveId=e.relatedContext.element.id;

//不允许停靠

if (e.relatedContext.element.id == 1) return false;

//不允许拖拽

if (e.draggedContext.element.id == 4) return false;

if (e.draggedContext.element.id == 11) return false;

return true;

},

},

};

Array.prototype.filter = Array.prototype.filter || function(func) {

var arr = this;

var r = [];

for (var i = 0; i < arr.length; i++) {

if (func(arr[i],i,arr)) {

r.push(arr[i]);

}

}

return r;

}

.itxst {

margin: 10px;

text-align :left;

}

.col {

width: 40%;

flex: 1;

padding: 10px;

border: solid 1px #eee;

border-radius: 5px;

float: left;

}

.col + .col {

margin-left: 10px;

}

.item {

padding: 6px 12px;

margin: 0px 10px 0px 10px;

border: solid 1px #eee;

background-color: #f1f1f1;

text-align: left;

}

.item + .item {

border-top: none;

margin-top: 6px;

}

.item:hover {

background-color: #fdfdfd;

cursor: move;

}

.item2 {

padding: 6px 12px;

margin: 0px 10px 0px 10px;

border: solid 1px #eee;

background-color: pink;

text-align: left;

}

.item2 + .item2 {

border-top: none;

margin-top: 6px;

}

.item2:hover {

outline: solid 1px #ddd;

cursor: move;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值