ちょっと空を撃って、dndSourceのいくつかの異なる実装があると思います。しかし、mouseover / dnddrop 中に呼び出されるイベント / チェック関数について知っておく必要があることがいくつかあります。
1 つのアプローチはcheckAcceptance(source, nodes)
、任意のターゲットに合わせてセットアップすることです。次に、現在ドラッグされているノードの参照を保持します。ただし、動的コンテンツを持つ複数のコンテナーがあると、扱いが難しくなります。
をオーバーライドしながらソースをセットアップしcheckAcceptance
、既知の (おそらくグローバルな) 変数を使用して追跡します。
var lastReference = null;
var target = dojo.dnd.Source(node, {
checkAcceptance(source, nodes) : function() {
// this is called when 'nodes' are attempted dropped - on mouseover
lastReference = source.getItem(nodes[0].id)
// returning boolean here will either green-light or deny your drop
// use fallback (default) behavior like so:
return this.inhertied(arguments);
}
});
最適なアプローチはこのようなものかもしれません - ターゲットとソースの両方とノードを手元に置いておきますが、ノードを探すのに適切なスタックを見つける必要があります。イベントと同時に公開されると思います ( onDrop
)すでに使用しています:
dojo.subscribe("/dnd/drop", function(source, nodes, copy, target) {
// figure out your source container id and target dropzone id
// do stuff with nodes
var itemId = nodes[0].id
}
dojo.subscribe およびイベントを通じて利用可能なメカニズム/トピックは、ここにリストされています
http://dojotoolkit.org/reference-guide/1.7/dojo/dnd.html#manager