vuedraggable clone

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

事件名称 说明
clone 从一个数组拖拽到另外一个数组时触发的事件和add不同,clone是复制了数组元素
<!--
 * @Description: vuedraggable
 * @Version: 0.1
 * @Autor: wangmiao
 * @Date: 2021-06-12 20:54:49
 * @LastEditors: wangmiao
 * @LastEditTime: 2021-06-12 21:31:12
-->
<template>
  <div>
    <!--使用draggable组件-->
    <div class="itxst">
      <div style="padding-left: 6px">clone例子,左边往右边拖动试试看</div>
      <div class="col">
        <draggable
          v-model="arr1"
          @end="end1"
          :options="{ group: { name: 'itxst', pull: 'clone' }, sort: true }"
          animation="300"
          :move="onMove"
          :clone="c
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`vuedraggable` 是一个基于 Vue.js 的可拖拽列表组件,可以用于实现拖拽排序、拖拽添加、拖拽删除等功能。它支持多种方式的拖拽,如鼠标拖拽、触摸拖拽等。 以下是 `vuedraggable` 的使用文档: ### 安装 使用 npm 或 yarn 安装 `vuedraggable`: ```bash npm install vuedraggable --save # 或 yarn add vuedraggable ``` ### 引入 在需要使用 `vuedraggable` 的组件中引入: ```javascript import draggable from 'vuedraggable' ``` ### 基本使用 在组件中使用 `draggable` 标签,并绑定需要拖拽的数据: ```html <draggable v-model="list"> <div v-for="item in list" :key="item.id">{{ item.content }}</div> </draggable> ``` 其中,`list` 是一个数组,用于存储需要拖拽的数据。在 `draggable` 组件中,使用 `v-model` 绑定这个数组,即可实现数据的拖拽排序。 ### 属性 `vuedraggable` 支持多种属性,用于控制拖拽的行为和样式。 - `value`:绑定拖拽的数据数组,可以使用 `v-model` 代替。 - `group`:设置拖拽分组,同一组内的元素可以互相拖拽。可以是字符串类型或对象类型,对象类型的值支持以下属性: - `name`:分组名称。 - `put`:是否允许拖拽放置到该分组内的元素中,默认为 `true`。 - `pull`:是否允许从该分组内的元素中拖拽出来,默认为 `true`。 - `handle`:设置拖拽把手的 CSS 选择器,只有在把手内拖拽才有效。 - `disabled`:禁用拖拽功能,可以是布尔类型或返回布尔类型的函数。 - `clone`:是否复制元素,而不是移动元素。可以是布尔类型或返回布尔类型的函数。 - `move`:自定义拖拽元素的移动方式,可以是函数或对象。函数接收 3 个参数: - `evt`:拖拽事件对象。 - `originalEvent`:原始事件对象。 - `element`:拖拽元素。 对象类型的值支持以下属性: - `start`:拖拽开始时的回调函数,接收 2 个参数:`evt` 和 `element`。 - `drag`:拖拽进行中的回调函数,接收 3 个参数:`evt`、`originalEvent` 和 `element`。 - `end`:拖拽结束时的回调函数,接收 2 个参数:`evt` 和 `element`。 - `onMove`:自定义移动方式的函数,接收 2 个参数:`evt` 和 `element`,返回 `true` 表示允许移动,返回 `false` 表示禁止移动。 - `tag`:设置拖拽容器的 HTML 标签,默认为 `div`。 - `list`:绑定拖拽的数据数组,可以使用 `v-model` 代替。 - `componentData`:传递给拖拽元素的额外数据。可以是对象类型或返回对象类型的函数。 - `moveTransition`:设置拖拽元素的过渡动画,可以是字符串类型或对象类型。对象类型的值支持以下属性: - `css`:设置 CSS 过渡属性,默认为 `true`。 - `duration`:设置过渡动画的时长,单位为毫秒,默认为 `200`。 - `curtain`:设置拖拽元素的幕布,即在拖拽过程中的半透明遮罩层。可以是字符串类型或对象类型。对象类型的值支持以下属性: - `zIndex`:设置幕布的层级,默认为 `9999`。 - `opacity`:设置幕布的不透明度,默认为 `0.5`。 - `bgColor`:设置幕布的背景颜色,默认为 `#fff`。 ### 事件 `vuedraggable` 支持多种事件,用于在拖拽过程中执行自定义操作。 - `start`:拖拽开始时的回调函数,接收 2 个参数:`evt` 和 `element`。 - `add`:元素被添加到容器时的回调函数,接收 2 个参数:`evt` 和 `element`。 - `remove`:元素从容器中删除时的回调函数,接收 2 个参数:`evt` 和 `element`。 - `update`:拖拽元素位置发生变化时的回调函数,接收 4 个参数:`evt`、`originalEvent`、`oldIndex` 和 `newIndex`。 - `end`:拖拽结束时的回调函数,接收 2 个参数:`evt` 和 `element`。 ### 示例 以下是一个完整的 `vuedraggable` 示例: ```html <template> <div> <draggable v-model="list" group="fruits" handle=".handle" @add="onAdd"> <div v-for="(item, index) in list" :key="item.id" class="item"> <span class="handle">↕</span> {{ item.content }} <button @click="removeItem(index)">删除</button> </div> </draggable> <draggable v-model="fruits" group="fruits"> <div v-for="fruit in fruits" :key="fruit" class="fruit">{{ fruit }}</div> </draggable> </div> </template> <script> import draggable from 'vuedraggable' export default { components: { draggable }, data() { return { list: [ { id: 1, content: '苹果' }, { id: 2, content: '香蕉' }, { id: 3, content: '橘子' }, { id: 4, content: '西瓜' } ], fruits: ['苹果', '香蕉', '橘子', '西瓜', '葡萄'] } }, methods: { removeItem(index) { this.list.splice(index, 1) }, onAdd(evt) { console.log('添加了元素:', evt.item) } } } </script> <style scoped> .item { display: flex; align-items: center; padding: 10px; margin: 5px; border: 1px solid #ccc; border-radius: 5px; } .handle { margin-right: 10px; cursor: pointer; } .fruit { display: inline-block; padding: 5px 10px; margin: 5px; background-color: #eee; border: 1px solid #ccc; border-radius: 5px; } </style> ``` 以上示例实现了一个拖拽列表,可以对列表项进行排序和删除。同时,还提供了一个可拖拽的水果列表,可以将水果添加到列表中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值