Отключение копирования в dojo.dnd - PullRequest
5 голосов
/ 04 января 2011

По умолчанию контейнер dojo.dnd.Source позволяет удерживать нажатой клавишу Ctrl, чтобы дублировать / копировать перетаскиваемый элемент, а не просто перемещать его.

Я знаю, что вы можете установить singular = true, чтобы остановить перетаскивание нескольких элементов, но как мне остановить копирование? Дублирование элементов не имеет смысла в контексте моих элементов (я делаю перетаскиваемый список для изменения порядка страниц в меню веб-сайта).

Спасибо

Ответы [ 3 ]

6 голосов
/ 29 ноября 2011

Или второй вариант

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 });

});
6 голосов
/ 05 января 2011

Я не уверен, есть ли более хороший способ, но я всегда добивался этого путем использования метода copyState в экземпляре Source, чтобы всегда возвращать false.

Если у вас есть несколькоИсточники на странице, вы также можете выбрать dojo.declare подкласс с переопределенным методом или dojo.extend dojo.dnd.Source, чтобы затушевывать метод во всех случаях.

2 голосов
/ 05 января 2011

Благодаря Кену Франкиеро мне удалось решить эту проблему.Для других в той же лодке вот мой код:

/**
 * 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>
...