vue3实现vuedraggable实现拖拽到垃圾桶图标位置进行删除

当使用Vue 3和vuedraggable库时,你可以按照以下方式实现拖拽到垃圾桶图标位置进行删除的功能:

首先,确保你已经安装了vuedraggable库。如果没有安装,可以通过以下命令进行安装:

vuedraggable 和vue-draggable-plus使用非常类似,你可以自己选择安装哪种。

vue-draggable-plus中文文档参考:

https://vue-draggable-plus.pages.dev/guide/

1、安装:

复制代码
npm install vue-draggable-plus

2、引入

复制代码
import { VueDraggable } from "vue-draggable-plus";

3、使用

在这个示例中:

  1. 使用了Vue 3的ref来创建items的响应式数据。

  2. 使用setup函数来设置itemsonDragEnddeleteItem等函数。

  3. 使用draggable组件来实现拖拽功能,绑定了items数据。

  4. 在拖拽结束时,会触发**onDragEnd函数,你可以在这里处理拖拽结束的逻辑。**

  5. 垃圾桶图标位置的<div>元素设置了@dragover.prevent@drop="deleteItem"事件,当拖拽到该位置时,会触发deleteItem函数来删除对应的项。

  6. deleteItem函数中,根据拖拽的数据项的id来过滤掉对应的项,实现删除功能。

    <template>
    <draggable v-model="items" @end="onDragEnd">
    {{ item.text }}
    </draggable>
    🗑️ Drag Here to Delete
    </template> <script> import { ref } from 'vue'; import draggable from 'vuedraggable';

    export default {
    components: {
    draggable
    },
    setup() {
    const items = ref([
    { id: 1, text: 'Item 1' },
    { id: 2, text: 'Item 2' },
    { id: 3, text: 'Item 3' },
    { id: 4, text: 'Item 4' }
    ]);

    复制代码
     const onDragEnd = (event) => {
       // 拖拽结束时的逻辑
     };
    
     const deleteItem = (event) => {
       const itemId = event.dataTransfer.getData('text/plain');
       items.value = items.value.filter(item => item.id.toString() !== itemId);
     };
    
     return {
       items,
       onDragEnd,
       deleteItem
     };

    }
    };
    </script>

    <style> .trash-can { border: 2px dashed #ccc; padding: 20px; margin-top: 20px; text-align: center; cursor: pointer; } </style>
相关推荐
冴羽几秒前
来自顶级大佬 TypeScript 之父的 7 个启示
前端·typescript
leafyyuki15 分钟前
在 Vue 项目中玩转 FullCalendar:从零搭建可交互的事件日历
前端·javascript·vue.js
决斗小饼干33 分钟前
低代码平台工作流引擎设计:从状态机到智能流转的技术演进
前端·低代码·工作流引擎
豆苗学前端39 分钟前
彻底讲透浏览器缓存机制,吊打面试官
前端·javascript·面试
米丘1 小时前
了解 window.history 和 window.location, 更好地掌握 vue-router、react-router单页面路由
前端
swipe1 小时前
箭头函数与 this 面试题深度解析:从原理到实战
前端·javascript·面试
星_离1 小时前
《Vue 自定义指令注册技巧:从手动到自动,效率翻倍》
前端·vue.js
狗头大军之江苏分军1 小时前
消耗 760万 Token 后,一文看懂了“小龙虾” OpenClaw 和 OpenCode 的区别
前端·后端
毛骗导演1 小时前
万字解析 OpenClaw 源码架构-安全与权限
前端·架构
哇哇哇哇1 小时前
vue3 ref解析
前端