Я пытаюсь заставить функцию перетаскивания работать в приложении vue.js, используя vue-draggable https://vuejsexamples.com/vuejs-drag-and-drop-library-without-any-dependency/ В библиотеке есть несколько событий, которые вы можете прослушать, и я хотел бы выполнить некоторую логику, как только элементотброшен.Однако я не могу получить доступ к компоненту 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 мог его прослушать?
Спасибо за помощь!