vue2 + vuedraggable实现卡片拖拽排序效果

记录一下拖拽排序的方法,以后可能会用到,找了好多方法,最后用了 vuedraggable,看资料,vue也有原生的拖拽,这个没有看过,有时间会研究一下,原生的可能更简单(只是我想的)。但是vuedraggable也不难。网上也有很多资料。
直接上代码,全部的代码都在这了。
第一步,肯定是 npm i -S vuedraggable 啦
第二步 直接在页面引入。见下方代码

<template>
    <div class="draggable">
        <Draggable v-model="tableData" animation="500" @start="onStart" @end="onEnd">
            <a-card v-for="(item, index) in tableData" :key="index" class="ck-content-common">
                <p>{{item.name}}</p>
                <p>Card content</p>
                <p>Card content</p>
            </a-card>
        </Draggable>
    </div>
</template>
<script>
import Draggable from 'vuedraggable';
export default {
    components: { Draggable },
    data() {
        return {
            tableData: [
                {
                    name: '0',
                    test: '0'
                },
                {
                    name: '1',
                    test: '1'
                },
                {
                    name: '2',
                    test: '2'
                },
                {
                    name: '3',
                    test: '3'
                },
                {
                    name: '4',
                    test: '4'
                },
                {
                    name: '5',
                    test: '5'
                },
                {
                    name: '6',
                    test: '6'
                },
                {
                    name: '7',
                    test: '7'
                },
                {
                    name: '8',
                    test: '8'
                },
                {
                    name: '9',
                    test: '9'
                }
            ]
        };
    },
    methods: {
        onStart({item,oldIndex}) {
            console.log('开始拖拽',item,oldIndex);
            console.log('原来的数据',this.tableData)
        },
        onEnd({item,newIndex}) {
            console.log('结束拖拽',item,newIndex);
            console.log('之后的数据',this.tableData)
        }
    }
};
</script>
<style scoped>
.draggable {
    width: 100%;
    height: 100%;
    padding: 20px;
    display: flex;
    flex-direction: row;
}
.ck-content-common {
    border: 1px solid #e8e8e8;
    display: inline-block;
    margin: 10px;
}
</style>

vuedraggable 的属性,可以自己研究一下,中文文档:https://www.itxst.com/vue-draggable/tutorial.html
这个主要还是想和 a-card 卡片结合起来用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3和Vue2一样都可以使用vuedraggable插件进行不同组件的拖拽。以下是使用vuedraggable插件实现不同组件拖拽的步骤: 1. 安装vuedraggable插件 在终端中执行以下命令: ``` npm install vuedraggable ``` 2. 引入vuedraggable插件 在需要使用vuedraggable插件的组件中引入: ```javascript import draggable from 'vuedraggable' ``` 3. 使用draggable组件 在模板中使用draggable组件,并设置相应的属性: ```html <draggable v-model="list" :element="'ul'" :options="{group:'items'}"> <li v-for="(item, index) in list" :key="item.id">{{ item.name }}</li> </draggable> ``` 其中,v-model绑定了一个数组list,用于记录拖拽后的顺序;:element指定了拖拽的元素类型,这里为ul;:options指定了拖拽的选项,这里设置了group为items,表示不同的组件可以互相拖拽。 注意:v-model绑定的数组中的元素必须要有一个唯一的标识符,用于区分不同的元素。 4. 处理拖拽事件 当拖拽完成后,可以通过监听dragend事件来处理拖拽后的逻辑: ```html <draggable v-model="list" :element="'ul'" :options="{group:'items'}" @dragend="onDragEnd"> <li v-for="(item, index) in list" :key="item.id">{{ item.name }}</li> </draggable> ``` ```javascript methods: { onDragEnd(event) { console.log(event) // 处理拖拽完成后的逻辑 } } ``` 在onDragEnd方法中,可以获取到拖拽完成后的事件对象,通过事件对象可以获取到拖拽前后的元素顺序,从而进行相应的操作。 以上就是使用vuedraggable插件实现不同组件拖拽的步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值