2011-01-04 23 views
5

Standardmäßig können Sie in einem dojo.dnd.Source-Container die Strg-Taste gedrückt halten, um ein gezogenes Objekt zu duplizieren/kopieren, anstatt es einfach zu verschieben.Deaktivieren des Kopierens in dojo.dnd

Ich weiß, dass Sie singular = true einstellen können, um zu verhindern, dass mehrere Objekte gezogen werden, aber wie höre ich mit dem Kopieren auf? Das Duplizieren von Elementen ist im Kontext meiner Artikel nicht sinnvoll (ich mache eine ziehbare Liste, um Seiten in einem Website-Menü neu anzuordnen).

Dank

Antwort

6

Ich bin nicht sicher, ob eine schönere Art und Weise gibt es, aber ich habe immer diese durch clobbering die copyState Methode auf der Quellinstanz erreicht immer false zurückzukehren.

Wenn Sie mehrere Quellen auf der Seite haben, können Sie eine Unterklasse mit der Methode dojo.declare überschrieben wählen auch, oder dojo.extenddojo.dnd.Source sich die Methode in allen Fällen verprügeln.

+1

Im Übrigen ist dies die offiziell anerkannte Methode. ;-) –

2

Dank Ken Franquiero konnte ich dieses Problem lösen. Für andere im selben Boot, hier ist mein Code:

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

Oder zweite Option

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

}); 
Verwandte Themen