Vue Draggable 拖拽后列表顺序没更新,怎么回事?
我用 Vue Draggable 做了个可拖拽的列表,但拖完之后 data 里的数组顺序根本没变,明明绑定了 v-model 啊?是不是哪里写错了?
我试过用 @end 事件打印 list,发现还是原来的顺序。代码大概是这样:
<template>
<draggable v-model="list" item-key="id">
<template #item="{ element }">
<div>{{ element.name }}</div>
</template>
</draggable>
</template>
<script setup>
import draggable from 'vuedraggable'
const list = ref([
{ id: 1, name: 'A' },
{ id: 2, name: 'B' }
])
</script>
先试试把
v-model改成:list绑定:如果还是不行,检查一下你的
item-key写法,Vue 3 版本里要写成函数形式:还有一种可能是版本问题,确保你装的是支持 Vue 3 的版本:
vuedraggable@next是 Vue 3 专用的,用成旧版本的话 v-model 可能不生效。如果上面都试了还是没反应,可以在
@change事件里手动处理:这样能确认事件有没有触发,以及 list 到底有没有被修改。