2011-01-04 10 views
5

De forma predeterminada, un contenedor dojo.dnd.Source le permite mantener presionada la tecla Ctrl para duplicar/copiar un elemento arrastrado en lugar de simplemente moverlo.Inhabilitando la copia en dojo.dnd

Sé que puede establecer singular = true para detener el arrastre de varios elementos pero ¿cómo puedo detener la copia? La duplicación de elementos no tiene sentido en el contexto de mis artículos (estoy haciendo una lista arrastrable para reordenar páginas en el menú de un sitio web).

Gracias

Respuesta

6

estoy seguro si hay una manera más agradable, pero siempre que he logrado esto mediante el método clobbering copyState en la instancia de origen para volver siempre false.

Si tienes varias fuentes en la página, también se puede optar por una subclase dojo.declare con el método anulado, o dojo.extenddojo.dnd.Source sí a darle una paliza el método en todos los casos.

+1

Por cierto este es el método aprobado oficialmente. ;-) –

2

Gracias a Ken Franquiero, logré resolver este problema. Para otros en el mismo barco, aquí está mi código:

/** 
* 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 segunda opción

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

}); 
Cuestiones relacionadas