Closed Aaron-zon closed 4 months ago
这是 Sortablejs 的问题,请规范使用嵌套元素,如果目标元素为ul,请确保子元素为li,如果目标元素为div,请确保子元素为div。
这是 Sortablejs 的问题,请规范使用舞蹈元素,如果目标元素为ul,请确保子元素为li,如果目标元素为div,请确保子元素为div。
谢谢,我也觉得这种嵌套关系应该规范一些,不过Sortablejs看起来已经解决这个问题了,对ul、li这种结构应该有特殊的处理
在使用ul、li时如果insertElement使用evt.newIndex则可以让元素显示在正常的位置上。
不过我还没太搞清楚newIndex和newDraggableIndex代表什么,这样写可能会有其他问题,请问您知道这两个分别代表什么吗?
实际上问题并没有被解决,newIndex为最新的index,newDraggableIndex为当前列表中排除不可拖拽项意外的index,在上述的案例中,我猜测您直接使用了 sortablejs,但是它与数据没有绑定关系,实际上获取到的 newDraggableIndex 依然为0,当我们在vue中使用时,需要对数据进行绑定,此时如果 newDraggableIndex 为0,将会把数据移动到数组的第一项。
其实问题并没有被解决,newIndex为最新的索引,newDraggableIndex为当前列表中排除不可拖拽关系意外的索引,在上述的案例中,我猜测你直接使用了sortablejs,但是它与数据没有绑定,实际上获取到的newDraggableIndex仍然为0,当我们在vue中使用时,需要对数据进行绑定,此时如果newDraggableIndex为0,就会把数据移动到备份的第一个。
谢谢,那这样的话我使用evt.newIndex的修改方式,在当前列表有不可拖拽元素时可能会出问题是吗
谢谢,那这样的话我使用evt.newIndex的修改方式,在当前列表有不可拖拽元素时可能会出问题是吗
是的,参考 https://github.com/Alfred-Skyblue/vue-draggable-plus/pull/44
例子:https://stackblitz.com/edit/vitejs-vite-epfmzq?file=src%2FApp.vue 以上用一个简单的双列表的组件模式写了个例子,只要使用ul、li、ol在其他模式也会有相同的效果。
流程:
将第一个容器中的元素拖拽到第二个容器的最后,鼠标抬起后该元素移动到了第二个容器的首位。
预期:
鼠标抬起后该元素停留在第二个容器最后的位置![msedge_cwY1znxRIP](https://github.com/Alfred-Skyblue/vue-draggable-plus/assets/47178158/77558bfc-c7af-480d-b050-7cfbb12abd56)