5

デフォルトでは、dojo.dnd.Source コンテナーを使用すると、Ctrl キーを押したままにして、ドラッグしたアイテムを単に移動するだけでなく、複製/コピーすることができます。

singular=true を設定して複数のアイテムのドラッグを停止できることは知っていますが、コピーを停止するにはどうすればよいですか? アイテムの複製は、アイテムのコンテキストでは意味がありません (Web サイト メニューでページを並べ替えるためのドラッグ可能なリストを作成しています)。

ありがとう

4

3 に答える 3

6

より良い方法があるかどうかはわかりませんが、私は常にcopyStateSource インスタンスのメソッドを壊して常に を返すようにすることでこれを達成してきましたfalse

ページに複数のソースがある場合は、dojo.declareオーバーライドされたメソッドを持つサブクラスを選択するか、dojo.extend dojo.dnd.Sourceそれ自体を選択してすべてのインスタンスでメソッドを上書きすることもできます。

于 2011-01-05T01:07:15.747 に答える
6

または2番目のオプション

dojo.addOnLoad(function(){

    //Disable the key events Ctrl and Shift
    dojo.extend( dojo.dnd.Source, { copyState: function( keyPressed, self ){ 
        return false; }}
    );

    //Create the dnd source object for data point column bar
    columnBar = new dojo.dnd.Source("viewColumnBar",{ singular: true });

});
于 2011-11-29T16:21:00.803 に答える
2

Ken Franquiero のおかげで、この問題を解決することができました。同じ船に乗っている他の人のために、ここに私のコードがあります:

/**
 * Extend dojo.dnd.Source to prevent copying
 */

dojo.require( 'dojo.dnd.Source' );
dojo.addOnLoad( function() {

    dojo.declare
    (
        'EditPosition',
        dojo.dnd.Source,
        {
            copyState: function( keyPressed, self )
            {
                return false;
            }
        }
    );

    oEditPosition = new EditPosition
    ( 
        'position_container', 
        {
            withHandles: 'true'
        } 
    );

} );

HTML:

<div id="position_container">
    <div class="dojoDndItem">
        <div class="dojoDndHandle drag_icon drag_handle"></div> <strong>Short Paragraphs</strong>
    </div>
    <div class="dojoDndItem">
        <div class="drag_icon fixed_handle"></div> About Us
    </div>
    <div class="dojoDndItem">
        <div class="drag_icon fixed_handle"></div> Team Members
    </div>
</div>
于 2011-01-05T10:53:37.030 に答える