备案 控制台
学习
实践
活动
专区
工具
TVP
写文章
专栏首页 贝塔博客 记录一下vuedraggable clone的坑,获取数据
4 0

海报分享

记录一下vuedraggable clone的坑,获取数据

vuedraggable 提供了一个 clone事件,这个事件会返回 克隆目标、来源、索引等相关信息。

事件名称

说明

clone

从一个数组拖拽到另外一个数组时触发的事件和add不同,clone是复制了数组元素

文档地址: 点击查看

<draggable
      :class="{'el-row':true,'drag-area':true,'empty':components.length==0}"
      :list="components"
      @add="add"
      @end="end"
      @clone="clone"  //这里特别注意
      :group="{name: 'people',pull: 'clone',put: true}"
      :animation="150"
    <ComponentRender class="col" v-for="element in components" :key="element.id" :element="element"
                     @select="selectComponent"></ComponentRender>
  </draggable>

如果想获取克隆对象数据的事件,应该使用属性,而名称和clone一模一样

<draggable
 :list="components"
 @clone='cloneA'//这里获取的是个原生对象相关的
 :clone='cloneB' //这里是获取的list中的某一项,可以通过加工后返回></draggable>

clone 属性事件

clone(origin) {
      //这一步最关键,没处理好,后面会数据混乱
      //通过转成字符串,让他变成一个新对象,不然拖拽第二个组件将会和第一个组件一模一样,改变第一个组件第二个、第三个也会跟着变动。
      const data = JSON.parse(JSON.stringify(origin))
      data.id = parseInt(new Date().getMilliseconds() + "" + Math.ceil(Math.random() * 100000)).toString(16);
      return data