【发布时间】:2019-05-28 11:34:03
【问题描述】:
我正在尝试使用 vue-draggable https://vuejsexamples.com/vuejs-drag-and-drop-library-without-any-dependency/ 在 vue.js 应用程序中使用拖放功能
该库几乎没有您可以收听的事件,我想在删除项目后执行一些逻辑。但是,我无法访问 vue 组件“this”以及数据和方法。我尝试使用this.$dispatch('symDragged', event);,但出于同样的原因它不起作用。 'this' 不是 vue 实例,而是可拖动元素的实例。
代码如下:
export default {
components: {
ICol,
SymptomsChooser, MultiSelectEditor, TempPressureChooser, BodyPartsEditor, MandatorySymptomsChooser},
data() {
return {
// data ommited...
options: {
dropzoneSelector: 'ul',
draggableSelector: 'li',
excludeOlderBrowsers: true,
showDropzoneAreas: true,
multipleDropzonesItemsDraggingEnabled: true,
onDrop(event) {
// delete symptom from old basket and add it to new one
let oldBasket = event.owner.accessKey;
let newBasket = event.droptarget.accessKey;
//this is not working
//this.symDragged(this.draggedSymId, oldBasket, newBasket);
},
onDragstart(event) {
this.draggedSymId = event.items[0].accessKey;
}
}
}
},
methods: {
symDragged(symId, oldBasketId, newBasketId) {
console.log("symDragged!");
let draggedSym = this.getSymById(symId);
let basketOld = this.getBasketById(oldBasketId);
this.delSym(basketOld, draggedSym);
this.addSym({baskedId: newBaskedId, sym: draggedSym});
}
//other methods ommited
}
}
那么,从回调事件中调用vue组件方法的正确方法是什么?或者也许我需要创建另一个事件以便 vue 实例可以监听它?
感谢您的帮助!
【问题讨论】:
标签: javascript vue.js drag-and-drop event-handling draggable