Vue3实现列表的拖拽切换

简介: Vue3实现列表的拖拽切换

安装插件

npm i vuedraggable        (本人版本:4.1.0,谨慎使用)

视图层:
<template>
    <div class="row">
        <div class="col" v-for="(item,index) in list1.list">
            <h3>{{ item.name }}{{item.nlist.filter(itm=>itm.checked).length}} / {{ item.nlist.length }}</h3>
            <draggable class="list-group" :list="item.nlist" group="people" @change="log">
                <template #item="{ element, index }">
                    <div class="list-group-item" :key="element.name">
                       <input type="checkbox" :checked="element.checked" @change="chanclick(item.id,index)"> {{ element.name }}
                    </div>
                </template>
            </draggable>
        </div>
        <rawDisplayer class="col-3" :value="list1" title="List 1" />
        <rawDisplayer class="col-3" :value="list2" title="List 2" />
    </div>
</template>
逻辑层:
<script setup>
import { ref } from "vue";
import Draggable from "vuedraggable";
const list1 = ref(
    {
        name: '项目一',
        list: [
            {
                name: '要做',
                id:123,
                nlist: [
                    { name: "John", id: 1,checked:false },
                    { name: "gro", id: 2,checked:true },
                    { name: "frfr", id: 3,checked:false },
                ]
            },
            {
                name: '正在做',
                id:456,
                nlist: [
                    { name: "法人股hn", id: 11,checked:false },
                    { name: "得分o", id: 22,checked:false },
                    { name: "共和国让他r", id: 33 ,checked:true},
                ]
            },
            {
                name: '代办',
                id:789,
                nlist: [
                    { name: "v人格人格", id: 111 ,checked:true},
                    { name: "个人购房", id: 222 ,checked:false},
                    { name: "帮帮发", id: 333 ,checked:true},
                ]
            },
        ]
    }
);
const list2 = ref([
    { name: "Juan", id: 5 },
    { name: "Edgard", id: 6 },
    { name: "Johnson", id: 7 },
]);
const log = (evt) => {
    console.log('wwwwwwwwwwwww', evt.added.element.name);
};
//状态的改变
const chanclick=(id,ind)=>{
    console.log('checked',id,ind);
}
</script>

样式层:(凑合看,自己怼吧)

有用没用来个点赞,看到这里也不易

相关文章
vue2和vue3的响应式原理有何不同?
大家好,我是V哥。本文详细对比了Vue 2与Vue 3的响应式原理:Vue 2基于`Object.defineProperty()`,适合小型项目但存在性能瓶颈;Vue 3采用`Proxy`,大幅优化初始化、更新性能及内存占用,更高效稳定。此外,我建议前端开发者关注鸿蒙趋势,2025年将是国产化替代关键期,推荐《鸿蒙 HarmonyOS 开发之路》卷1助你入行。老项目用Vue 2?不妨升级到Vue 3,提升用户体验!关注V哥爱编程,全栈开发轻松上手。
高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
mermaid是一款非常优秀的基于 JavaScript 的图表绘制工具,可渲染 Markdown 启发的文本定义以动态创建和修改图表。非常适合新手学习或者做一些弱交互且自定义要求不高的图表 除了流程图以外,mermaid还支持序列图、类图、状态图、实体关系图等图表可供探索。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解
onMounted作为vue3中最常用的钩子函数之一,能够灵活、随心应手的使用是每个Vue开发者的必修课,同时根据其不同写法的特性,来选择最合适最有利于维护的写法。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Pinia 如何在 Vue 3 项目中进行安装和配置?
Pinia 如何在 Vue 3 项目中进行安装和配置?
管理数据必备;侦听器watch用法详解,vue2与vue3中watch的变化与差异
一篇文章同时搞定Vue2和Vue3的侦听器,是不是很棒?不要忘了Vue3中多了一个可选项watchEffect噢。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
158 64
|
5月前
|
Vue3中使用provide/inject来避免v-model的循环引用
`provide`和`inject`是 Vue 3 中非常有用的特性,在处理一些复杂的组件间通信问题时,可以提供一种灵活的解决方案。通过合理使用它们,可以帮助我们更好地避免`v-model`的循环引用问题,提高代码的质量和可维护性。
166 58
除了provide/inject,Vue3中还有哪些方式可以避免v-model的循环引用?
需要注意的是,在实际开发中,应根据具体的项目需求和组件结构来选择合适的方式来避免`v-model`的循环引用。同时,要综合考虑代码的可读性、可维护性和性能等因素,以确保系统的稳定和高效运行。
142 56
创建vue3项目步骤以及安装第三方插件步骤【保姆级教程】
这是一篇关于创建Vue项目的详细指南,涵盖从环境搭建到项目部署的全过程。
381 1
vue3使用pinia中的actions,需要调用接口的话
通过上述步骤,您可以在Vue 3中使用Pinia和actions来管理状态并调用API接口。Pinia的简洁设计使得状态管理和异步操作更加直观和易于维护。无论是安装配置、创建Store还是在组件中使用Store,都能轻松实现高效的状态管理和数据处理。
205 3