问题描述
我想在使用 vuedraggable 拖放后更新我的主列表顺序。
第一次尝试
所以我的代码如下:
<draggable v-model="draggablePriorites" handle=".move" v-bind="dragOptions" @start="drag = true" @end="drag = false">
<transition-group type="transition" :name="!drag ? 'flip-list' : null">
<el-col v-for="priorite in priorites" :key="priorite.ordre" :span="4">
</el-col>
</transition-group>
</draggable>
在这个配置中一切看起来都很好,但是顺序的变化永远不会在数据库中持久化,变化只是视觉上的。
第二次尝试
所以我尝试在放下组件时更改顺序:
<draggable v-model="draggablePriorites" handle=".move" v-bind="dragOptions" @start="drag = true" @end="changeOrder($event)">
<transition-group type="transition" :name="!drag ? 'flip-list' : null">
<el-col v-for="priorite in priorites" :key="priorite.ordre" :span="4">
</el-col>
</transition-group>
</draggable>
changeOrder(event) {
this.drag = false
this.changePrioriteOrder({ beforeIndex: event.oldindex + 1,afterIndex: event.newIndex + 1 })
}
突变
changePrioriteOrder(state,{ beforeIndex,afterIndex}) {
_.forEach(state.priorites,function(priorite) {
if (priorite.ordre === beforeIndex) {
priorite.ordre = afterIndex
return
}
if (beforeIndex < afterIndex) {
if (priorite.ordre > beforeIndex && priorite.ordre <= afterIndex) {
priorite.ordre = priorite.ordre - 1
}
} else {
if (priorite.ordre >= afterIndex && priorite.ordre <= beforeIndex) {
priorite.ordre = priorite.ordre + 1
}
}
})
}
在这种情况下,订单的更改会持续到数据库中,但是当我放下组件时,它会返回到其初始位置。
第三次尝试
功能上的一点变化
changeOrder(event) {
this.drag = false
this.changePrioriteOrder({ ordreAvant: event.oldindex + 1,ordreApres: event.newIndex + 1 })
this.draggablePriorites = this.getFeuilleDeRoutePriorites
}
同样的问题,组件返回到它的初始位置,但存储中的顺序更改是有效的并持久化到数据库中。
有人知道如何同步可拖动列表和商店列表吗?
也许我对 vuedraggble 组件有什么不理解
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)