VueJS-使用sortableJS

时间:2019-05-20 13:02:04

标签: javascript vue.js drag-and-drop sortablejs

我正在尝试将sortableJS与vueJS一起使用。一切工作正常,但VueJS无法检测到sortableJS范围内所做的更改,因为可排序JS直接更改DOM。

我已经将'this'从vue的实例传递给了sort的onEnd方法。当我在屏幕上拖放元素时触发事件。我得到了newIndex和oldIndex。当我交换两个索引时,现在可以以某种方式检测到对DOM所做的更改,并且将数组元素交换两次。

我想要一种方法,可以告诉Vue检测DOM中所做的更改。或可行的解决方案。

onEnd: function(evt) {        
        self.showIcons = true;
        document.body.style.cursor = "unset";

        // changing order of items
        const oldIndex = evt.oldIndex;
        const newIndex = evt.newIndex;

        const tempTodos = JSON.parse(JSON.stringify(self.todos));
        const tempItem = tempTodos.slice(oldIndex, oldIndex+1);
        tempTodos.splice(oldIndex, 1);
        tempTodos.splice(newIndex, 0, ...tempItem);
        self.todos = tempTodos;

实际结果-    原始数组-[1、2、3]    如果我拖动3并与1交换,则新数组将交换两次(一次    通过onEnd,一次通过DOM检测)。所以新数组是-[2,3,1]

预期结果-    原始数组-[1、2、3]    如果我拖动3并与1交换,则新数组应为-[3,2,1]

0 个答案:

没有答案