Для тех, у кого похожая проблема, вот решение.
Сначала вам нужно поработать с событием @end
, затем в своем методе вы можете получить идентификатор перетаскиваемого элемента с помощьюдоступ к атрибуту, который вы инициализируете в своем v-for
, в моем случае это был data-id
, поэтому я мог получить к нему доступ так:
let id = evt.item.dataset.id
Теперь, когда у вас есть свой идентификатор в вашей функции, вы можетеполучите массив объектов с помощью API.
Далее вам нужно добавить массив, который вы только что восстановили, во второй список с правильным индексом, для этого вам нужно получить целевой индекс второгоперечислите и передайте его с вашим массивом:
let index = evt.newIndex
this.secondList.splice(index, 0, ...myArray)
Последний шаг, вам нужно очистить второй список, потому что там будет и начальный перетаскиваемый элемент, для меня я просто сделал цикл, и если я не сделалнайти определенный атрибут в одном из объектов, это означает, что он должен быть удален, но вы можете думать о чем угодно.
Вот весь код:
<draggable
v-model="firstList"
:clone="clone"
:options="options"
@end="onEnd">
<div
v-for="c in firstList"
:key="c.id"
:data-id="c.id">
</div>
</draggable>
...
onEnd (evt) {
const id = evt.item.dataset.id
HTTP.get(`/${id}/getMyArray`)
.then(res => {
let myObjects = JSON.parse(res.data) // => [{...}, {...}, ...]
let index = evt.newIndex
this.secondList.splice(index, 0, ...myObjects)
})
}