5

默认情况下,dojo.dnd.Source 容器允许您按住 Ctrl 来复制/复制拖动的项目,而不仅仅是移动它。

我知道您可以设置singular=true 来停止拖动多个项目,但我如何停止复制?复制项目在我的项目的上下文中没有意义(我正在制作一个可拖动的列表来重新排序网站菜单上的页面)。

谢谢

4

3 回答 3

6

我不确定是否有更好的方法,但我总是通过破坏copyStateSource 实例上的方法以始终返回来实现这一点false

如果页面上有多个 Source,您还可以选择dojo.declare覆盖该方法的子类,或者选择dojo.extend dojo.dnd.Source它自己在所有实例中破坏该方法。

于 2011-01-05T01:07:15.747 回答
6

或第二种选择

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 回答