【问题标题】:How to detect dragging of source item in dojo?如何检测道场中源项目的拖动?
【发布时间】:2014-01-10 19:06:31
【问题描述】:

我们使用 dojo dnd 包进行拖放。有一个Moveable类可用于移动节点元素,代码如下所示

var dropSource = new Moveable(DIV_ID);

和移动项目可以通过以下行(使用 onMove 事件)进行跟踪

on(dropSource, "Move",some_function);

是否可以使用 dojo/dnd/Source 实现相同的目标?

【问题讨论】:

    标签: javascript dojo dojo-dnd


    【解决方案1】:

    我认为没有类似的事件。但是,有一个事件可以用来检查拖动动作是否开始(onDndStart),还有一个事件可以用来检查它是否停止,可以取消或停止(onMouseUp) .

    要检查它是否在移动,您可以尝试使用onMouseMove 事件。不好的是它总是在将鼠标移到dojo/dnd/Source 上时执行。因此,要使其正常工作,您必须检查用户是否正在拖动元素。仅当 onMouseMove 事件介于 onDndStartonMouseUp 事件之间时才会发生这种情况。

    举个例子:

    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 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2019-01-08
      • 1970-01-01
      相关资源
      最近更新 更多