我们正在使用dojo dnd包进行拖放。 Moveable类可以用于移动节点元素,代码如下所示
var dropSource = new Moveable(DIV_ID);
和移动项目可以使用以下行跟踪(使用onMove事件)
on(dropSource, "Move",some_function);
是否可以使用dojo / dnd / Source实现相同的功能?
答案 0 :(得分:1)
我认为没有类似的事件。但是,有一个事件可用于检查拖动动作是否已启动(onDndStart
)并且有一个事件可用于检查它是否已停止,可以取消或停止({{ 1}})。
要检查它是否正在移动,您可以尝试使用onMouseUp
事件。不好的是,它总是在将鼠标移到onMouseMove
上时执行。因此,要使其正常工作,您必须检查用户是否正在拖动元素。仅当dojo/dnd/Source
事件介于onMouseMove
和onDndStart
事件之间时,才会出现这种情况。
这是一个例子:
onMouseUp
我不知道这是否涵盖了所有情况,我认为你实际上无法检索被拖动的项目。我在上面的示例中使用了这些函数JSfiddle来扩展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
}
});
以支持dojo/dnd/Source
事件。
我不认为这是最巧妙的解决方案,但如果在Dojo中有一个我真的不喜欢的模块(排除DojoX),那么它就是onMove
部分。