Как обнаружить перетаскивание исходного элемента в Dojo?

Мы используем пакет dojo dnd для перетаскивания. Существует класс Moveable, который можно использовать для элемента движущегося узла, и код выглядит так, как показано ниже

var dropSource = new Moveable(DIV_ID);

и перемещение элемента можно отслеживать по следующей строке (используя событие onMove)

on(dropSource, "Move",some_function);

Можно ли добиться того же, используя dojo/dnd/Source?

1 ответ

Я не думаю, что есть подобное событие. Тем не менее, есть событие, которое можно использовать для проверки запуска движенияonDndStart) и существует событие, которое можно использовать для проверки его остановки, которое можно отменить или остановить (onMouseUp).

Чтобы проверить, если он движется, вы можете попробовать использовать onMouseMove событие. Плохо то, что он всегда выполняется при наведении мыши на dojo/dnd/Source, Поэтому, чтобы заставить его работать должным образом, вы должны проверить, перетаскивает ли пользователь элемент. Это происходит только если onMouseMove событие между onDndStart а также onMouseUp событие.

Итак, пример:

var isDragging = false;
on(mySource, "DndStart", function() {
    isDragging = true;
});
on(mySource, "MouseUp", function() {
    isDragging = false;
});
on(mySource, "MouseMove", function() {
    if (isDragging) {
        // Now an element is being moved, I think
    }
});

Я не знаю, охватывает ли это все случаи, и я не думаю, что вы на самом деле можете получить предмет, который перетаскивается. Я сделал JSfiddle, который использует эти функции в моем примере выше, чтобы расширить dojo/dnd/Source поддерживать onMove событие.


Я не думаю, что это самое изящное решение, но если в Dojo есть один модуль, который мне действительно не нравится (за исключением DojoX), то это будет dojo/dnd часть.

Другие вопросы по тегам