Deaktivieren des Kopierens in Dojo.dnd
-
15-10-2019 - |
Frage
Standardmäßig mit einem Dojo.Dnd.Source -Container können Sie Strg zum Duplizieren/Kopieren eines gezogenen Elements halten, anstatt es nur zu verschieben.
Ich weiß, dass Sie Singular = treu setzen können, um zu verhindern, dass mehrere Gegenstände gezogen werden, aber wie kann ich aufhören zu kopieren? Das Duplizieren von Elementen macht im Kontext meiner Elemente keinen Sinn (ich erstelle eine draggable Liste, um Seiten in einem Website -Menü nachzuordnen).
Vielen Dank
Lösung
Ich bin mir nicht sicher, ob es einen schöneren Weg gibt, aber ich habe dies immer erreicht, indem ich das kuschelte copyState
Methode in der Quellinstanz, um immer zurückzukehren false
.
Wenn Sie mehrere Quellen auf der Seite haben, können Sie sich auch entscheiden dojo.declare
eine Unterklasse mit der überschriebenen Methode oder dojo.extend
dojo.dnd.Source
selbst in allen Fällen die Methode zu kuscheln.
Andere Tipps
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 });
});
Dank Ken Franquiero habe ich dieses Problem gelöst. Für andere im selben Boot ist hier 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>