2011-01-04 10 views
5

Per impostazione predefinita un contenitore dojo.dnd.Source consente di tenere premuto Ctrl per duplicare/copiare un oggetto trascinato anziché semplicemente spostarlo.Disabilitare la copia in dojo.dnd

So che è possibile impostare singular = true per interrompere più elementi trascinati, ma come posso interrompere la copia? La duplicazione di articoli non ha senso nel contesto dei miei articoli (sto facendo una lista trascinabile per riordinare le pagine sul menu di un sito web).

Grazie

risposta

6

io sono sicuro se c'è un modo più bello, ma ho sempre compiuto questo clobbering il metodo copyState nell'istanza di origine per tornare sempre false.

Se hai diverse fonti sulla pagina, si potrebbe anche scegliere di dojo.declare una sottoclasse con il metodo ignorato, o dojo.extenddojo.dnd.Source stesso per clobber il metodo in tutti i casi.

+1

Per inciso questo è il metodo ufficialmente approvato. ;-) –

2

Grazie a Ken Franquiero, sono riuscito a risolvere questo problema. Per gli altri nella stessa barca, ecco il mio codice:

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

o la seconda opzione

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

}); 
Problemi correlati