对于那些有类似问题的人,这里是解决办法。
首先你需要和
@end
事件,然后在方法中,您可以通过访问一个属性来获取被拖动元素的ID,但您将在
v-for
在我的情况下
data-id
所以我可以这样访问它:
let id = evt.item.dataset.id
既然函数中有了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)
})
}