Проблема
Я использую Sortable JS для создания перетаскиваемого компонента дерева. Это означает, что каждый из моих sortable-item
s имеет toggle-arrow
в качестве дочернего элемента, который открывает и закрывает sub-tree
(если он есть).
Я пытаюсь использовать stopPropagation()
для предотвращения выбор родительского sortable-item
, если toggle-arrow
нажат, но он не работает.
В закрытом состоянии это выглядит так:
И в открытом состоянии выглядит так:
Синяя подсветка, которую вы видите в открытом состоянии (второе изображение), - это стиль, который я выбрал для опции selectedClass
при использовании плагин multiDrag
.
Это иллюстрирует, что когда я нажимаю на toggle-arrow
, выбирается родительский sortable-item
.
Я не хочу, чтобы это произошло.
Код
Код элемента в моем компоненте дерева Sortable JS выглядит так (с использованием Vue. js и синтаксиса Pug) :
div.sortable-item
div.content
div.toggle-arrow(@click.stop="toggleTree($event)")
div.icon
div.title
div.sub-tree
И затем у меня есть обработчик для привязки @click
к моему элементу toggle-arrow
:
toggleTree = function($event) {
$event.stopPropagation()
/// Code for handling the sub-tree toggling goes here.
/// The sub-tree toggling itself works just fine.
}
Вы можете видеть, что я объявляю @click.stop
как событие b inding, который должен остановить всплытие события click
из дочернего элемента toggle-arrow
, но он не работает.
Я даже пытаюсь использовать $event.stopPropagation
в обработчике. Но событие, кажется, продолжает пузыриться, и, таким образом, родительский элемент sortable-item
оказывается в выбранном состоянии.
Я также пробовал объявить @click.native.stop
как привязку события, но это просто мешает моему toggleTree
метод от обстрела вообще. Я предполагаю, что где-то в пределах SortableJS
есть другой обработчик событий, который мешает привязке @click.native.stop
.
Вопросы
Как мне остановить распространение события при нажатии на дочерний элемент моего sortable-item
?
Как выбор обрабатывается плагином multiDrag
? Я покопался в коде и увидел, что событие select
запускается в обработчике drop
события из sortable-item
, но меня это смущает. Почему обработчик событий drop
используется для переключения выбора sortable-item
?
Заранее благодарим вас за любой свет, который вы можете пролить на это.