3

親 div の下にネストされた 2 つの div があり、これらすべてを dojo.dnd のソースおよびターゲットにしたいと考えています。

コンテンツがドロップされた div にノードを追加し、ユーザーがこれを 3 つの div 間で移動できるようにしたいと考えています。

このようなもの - http://www.upscale.utoronto.ca/test/dojo/tests/dnd/test_nested_drop_targets.html

これは古いバージョンの Dojo で実装されていると思われ、1.4 では機能しないようです。

ネストされたターゲットのサポートは削除されましたか? これを達成する方法はありますか?

4

3 に答える 3

1

この場合、回避策を使用しました。ネストされたターゲットの同じ場所に同じ幅と高さで、より高いz-Index値で配置された別のDIV要素を作成します。次に、新しいDIV要素がネストされたターゲットをカバーします。ユーザーがネストされたターゲットにドロップしようとすると、実際には上記の新しいDIV要素にドロップします。新しいDIV要素が親ドロップターゲットにネストされていない限り、Dojoのdnd操作は適切に機能します。私は通常、新しいDIV要素をbody要素の子として配置します。

あなたがする必要があるのは、で新しいDIVを作成し、onDndStartそれを破棄することです。そうonDndCancelすれば、すべてがうまくいくはずです。

于 2010-03-08T08:44:40.340 に答える
1

ネストされたソース/ターゲットは現在サポートされていません。ほとんどの場合、独立したソース/ターゲットを使用し、CSS で希望どおりに配置することで、この制限を回避できます。

于 2010-01-17T06:53:55.413 に答える
0

Dojo バージョン 1.10 は、ネストされた Dnd をまだサポートしていません。

CSS ポジショニングとオーバーレイ div が機能しませんでした。しかし、要素を dndContainer から親 dndContainer にドラッグしても、親の onMouseOverEvent がトリガーされないことに気付きました。

誰かがまだ道場を使用していて同じ問題を抱えている場合、これを解決するための私のアプローチは次のとおりです。

独自の dndSource を宣言します (nestedDndSource.js など)。

define([
    "dojo/_base/declare",
    "dojo/dnd/Source",
    "dojo/dnd/Manager"
], function(declare,dndSource, Manager){

    var Source = declare("dojo.dnd.Source", dndSource, {
        parentSource: null,
        onOutEvent: function(){
            if(this.parentSource != undefined)
                Manager.manager().overSource(this.parentSource)
            Source.superclass.onOutEvent.call(this);
        }
    });

    return Source;
})

dojo の代わりにそのネストされた DndSource を子に使用し、必ず親の dndSource を parentSource-Parameter として提供してください。

var parentDndSource = new dojoDndSource(parentNode, {..});
var childDnDSource = new nestedDndSource(childNode,{
                        parentSource: parentDndSource,
                        onDropExternal: ...
                     });

作業例: https://jsfiddle.net/teano87/s4pe2jjz/1/

于 2015-04-23T14:34:19.810 に答える