Disabilitare la copia in dojo.dnd
-
15-10-2019 - |
Domanda
Per impostazione predefinita un contenitore dojo.dnd.Source consente di tenere premuto Ctrl per duplicare / copiare un elemento trascinato piuttosto che spostarla.
So che è possibile impostare = singolari vero per fermare le voci multiple trascinati ma come faccio a interrompere la copia? Duplicare gli elementi non ha alcun senso nel contesto dei miei oggetti (sto facendo una lista trascinabili per riordinare le pagine su un sito web menu).
Grazie
Soluzione
Non 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.extend
dojo.dnd.Source
stesso per clobber il metodo in tutti i casi.
Altri suggerimenti
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 });
});
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>