我正在尝试将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]