0

ドラッグ アンド ドロップの目的で dojo dnd パッケージを使用しています。ノード要素の移動に使用できる Moveable クラスがあり、コードは次のようになります。

var dropSource = new Moveable(DIV_ID);

および移動アイテムは、次の行で追跡できます( onMove イベントを使用)

on(dropSource, "Move",some_function);

dojo/dnd/Source を使用して同じことを達成することは可能ですか?

4

1 に答える 1

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/SourceonMove


それが最も優れた解決策だとは思いませんが、Dojo で本当に気に入らないモジュールが 1 つあるとすれば (DojoX を除く)、それはそのdojo/dnd一部です。

于 2014-01-11T00:16:31.890 に答える