1

だから私は複数Ext.dd.DragSourceExt.dd.DropTargetオブジェクトを持っています。必要な正しい動作を得るために、これら両方のオブジェクトのイベントにロジックをアタッチしています。すべてのロジックをドラッグまたはドロップに接続することはできません。

私の問題は、ドラッグ オブジェクトを設定するonDragOutと、ドロップ オブジェクトでのandの発火onDragEnterが停止することです。notifyEnternotifyOut

これらのイベントの両方を発生させる方法はありますか?

var ds = new Ext.dd.DragSource(id, { ddGroup: 'drops' });
ds.onDragEnter = function (e, id) { console.log('Drag Enter'); }
ds.onDragOut = function (e, id) { console.log('Drag Exit'); }

var dt = new Ext.dd.DropTarget(id, { ddGroup: 'drops' });
// These never fire.
dt.notifyEnter = function (source, evt, data) { console.log('Drop Enter'); }
dt.notifyOut = function (source, evt, data) { console.log('Drop Exit'); }

私は Extjs 4.0.2a を使用していますが、残念ながら現時点ではこのバージョンに固執しています。これに関するどんな助けも素晴らしいでしょう。

4

2 に答える 2

0

ExtJS ドキュメントとソース コードを見ると、元の関数が and の呼び出しをトリガーする and を上書きしていると思いonDragEnterます。ドキュメント ( http://docs.sencha.com/ext-js/4-1/#!/api/Ext.dd.DragSource ) にリストされている関数のみを「デフォルトで空の関数」として上書きすることをお勧めします。 、および。onDragOutnotifyEnternotifyOutbeforeDragEnterbeforeDragOut

これらのメソッドを上書きする必要がある場合は、元のメソッドを保存して関数から呼び出すことをお勧めします。そのパターンについて助けが必要な場合は、回答を編集して例を提供できます。

于 2013-03-08T23:40:35.810 に答える
0

回答がなかったので、現在使用している回避策を追加します。これは問題の解決策ではなく、問題を回避するための代替手段です。

したがって、ドラッグ アンド ドロップ要素で両方のイベントを同時に発生させることはできないため、単純に異なるイベントを使用しています。

var ds = new Ext.dd.DragSource(id, { ddGroup: 'drops' });
ds.onDragOver = function (e, id) { console.log('Drag Over'); }
ds.beforeDragOut = function (e, id) { console.log('Drag Out Almost'); }

これらのイベントは、私が望んでいたものとまったく同じではありませんが、ロジックを少し追加するだけで、非常によく似た方法で動作させることができます。

より良い解決策、適切なイベントを発生させる方法があれば、私は喜んでそれを受け入れます。

于 2013-03-04T20:56:16.707 に答える