だから、私は剣道のソースコードを見てはconsole.logの束(とローカルプロジェクトでコードを使用)さんと、ここで私が見つけたものです:
(興味のある方法は(_dragあります)とソート可能なクラスの_movePlaceholderは())
これは、剣道は、プレースホルダを表示するかどうかを決定する方法である(_drag内部_movePlaceholderを())()を呼び出す:
if (axisDelta.y < 0 && (moveOnDragEnter || offsetDelta.top < 0)) {
direction = 'prev';
} else if (axisDelta.y > 0 && (moveOnDragEnter || offsetDelta.top > 0)) {
direction = 'next';
}
あなたが移動している間右側のdropzone上にカーソルを上に移動:
- axisDelta.y -1(上に移動)され、offsetDelta.top> 0(ドロップ領域の上部の下にある)
だから、どちらの場合はtrueです。
インスタントあなたが1つのピクセルをダウンドラッグ:
- axisDelta.y 1(あなたが下に移動している)でありoffsetDelta.top> 0
(依然としてドロップエリアのトップ以下)
direction = 'next';
に入ると、方向が設定されているので、_movePlaceholder()が呼び出され、「次の」スポット(最後の項目の下)に「ここにドロップ」が表示されます。
ドロップ領域の上部からドラッグすると、direction = 'prev';
というケースに当たって、「ここにドロップする」が「前」の場所(最初の項目の上)に表示されます。
moveOnDragEnter
変数は、offsetDeltaチェックを無効にするために、あなたのソート可能なのinitにtrueに設定することができますが、あなたがそれを設定した場合、それはドロップエリアに入るとすぐに表示されるように、「ここにドロップ」が発生します文書化されていないオプションのようですしかし、上にドラッグするとリストの一番上に表示され、下にドラッグするとリストの一番下に表示されます。これはあなたが望むものではありません。
Whew!
だから、現在のロジックでは上向きにドラッグする方法がなく、リストの一番下に「Drop Here」が表示され、ソート可能な制限があります。
あなたが好きなのであれば、ソースコードを編集してロジックにケースを追加して、より多くの条件の組み合わせをチェックすることができます。e:
if (I'm anywhere in the drop area) {
figure out if the cursor position is above the first item or below the last item and set direction accordingly so that _movePlaceholder() will get called
}
...または制限を受け入れてください。