vue拖拽组件使用 嵌套使用

  1. 下载插件 npm 输入 npm i -S vuedraggable 或者 yarn add vuedraggable
    使用npm下载vuedraggable组件好----》查看第二步骤
  2. 页面引入组件 import draggable from 'vuedraggable' 在这里插入图片描述
  3. 插入代码块<draggable v-model="myArray" group="people" @start="drag=true" @end="drag=false"> <div v-for="element in myArray" :key="element.id">{{element.name}}</div></draggable>

注意:key最好为字段的唯一如id,start为 任务拖动开始 end为结束时已经更改后的数组。如果需要知道移动的前后位置可以 这样操作<draggable v-model="myArray" group="people" @start="onStart" @end="onEnd" @move="moved"> <div v-for="element in myArray" :key="element.id">{{element.name}}</div></draggable> 在函数中写下面展示一些 内联代码片

// evt.draggedContext.futureIndex 移动后的索引
//evt.relatedContext 移动后的关联数据   为移动后的位置的上一条数据
//evt.relatedContext 移动前的关联数据 为移动者本身
// evt为移动对象
	moved(evt){
		console.log(evt)
		console.log(evt.draggedContext.futureIndex)
		console.log(evt.relatedContext)
		console.log(evt.draggedContext)
	}onStart(){
            this.drag = true
    },
    //移动后请求数据
	onEnd() {
            this.drag = false
            let arr = []
            this.workflow.forEach((item) => {
                arr.push(item.id)
            })
            dragWork(arr).then(response=>{
                const {code} = response
            })
        },
  1. 如何嵌套多个drag
// handle=".mover"  有 .mover的class 才能移动 ,或者通过fiter 配置哪些可移动 。 group为分组,同一个组的成员才能移动 下面是带你过关代码

// 
<draggable class="wrapper" v-model="workflow" handle=".mover"  @start="onStart" @end="onEnd"  :options="{group:{name: group},filter: '.undraggables', sort: true }" >
        <transition-group class="board" >
               <draggable  :list="items.data" :disabled="disabled" handle=".handle"  @start="startChild"  :move="checkMove" @end="endChild(index)"  :set-data="setData"  :options="{group:{name: task},filter: '.undraggable', sort: true}">
                </draggable>
       </transition-group>
</draggable>
                             
                            
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue-draggable是一个基于Vue.js拖拽组件,它可以帮助我们实现元素的拖拽功能。而嵌套则是指在使用vue-draggable时,可以将多个拖拽元素进行嵌套,形成一个层级结构。 在vue-draggable中实现嵌套功能的方法是通过设置`group`属性和`group`事件来实现。首先,我们需要给每个拖拽元素设置一个唯一的`group`属性,以标识它们属于同一个组。然后,在父级元素上设置`group`属性为相同的值,表示这些元素可以进行嵌套。 当我们拖拽一个元素时,vue-draggable会触发`group`事件,我们可以通过监听该事件来获取拖拽的相关信息,例如被拖拽元素的索引、目标位置等。通过处理这些信息,我们可以实现嵌套的逻辑,例如将被拖拽元素插入到目标位置的子元素中。 下面是一个简单的示例代码,演示了如何在vue-draggable中实现嵌套功能: ```html <template> <div> <draggable v-model="list" :group="{ name: 'nested' }" @group="handleGroup"> <div v-for="(item, index) in list" :key="item.id"> {{ item.name }} <draggable v-model="item.children" :group="{ name: 'nested' }" @group="handleGroup"> <div v-for="(child, childIndex) in item.children" :key="child.id"> {{ child.name }} </div> </draggable> </div> </draggable> </div> </template> <script> import draggable from 'vuedraggable'; export default { components: { draggable, }, data() { return { list: [ { id: 1, name: 'Parent 1', children: [ { id: 11, name: 'Child 1-1' }, { id: 12, name: 'Child 1-2' }, ], }, { id: 2, name: 'Parent 2', children: [ { id: 21, name: 'Child 2-1' }, { id: 22, name: 'Child 2-2' }, ], }, ], }; }, methods: { handleGroup(event) { // 处理拖拽事件,实现嵌套逻辑 console.log(event); }, }, }; </script> ``` 在上述代码中,我们使用了`vuedraggable`组件,并在父级元素和子级元素上设置了相同的`group`属性。同时,我们监听了`group`事件,并在`handleGroup`方法中处理拖拽事件,可以根据事件的信息来实现嵌套的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值