La désactivation de la copie dans dojo.dnd
-
15-10-2019 - |
Question
Par défaut un conteneur dojo.dnd.Source vous permet de tenir la touche Ctrl pour dupliquer / copier un élément traîna plutôt que de se déplacer juste.
Je sais que vous pouvez définir singulier = true pour arrêter les articles multiples traînés, mais comment puis-je arrêter la copie? articles Duplication n'a pas de sens dans le contexte de mes articles (je fais une liste des pages draggable réordonnancement sur un menu site).
Merci
La solution
Je ne suis pas sûr s'il y a une façon plus agréable, mais je l'ai toujours accompli ce par la méthode de démolir copyState
sur l'instance source pour toujours revenir false
.
Si vous avez plusieurs sources sur la page, vous pouvez également choisir de dojo.declare
une sous-classe avec la méthode remplacée ou dojo.extend
de dojo.dnd.Source
lui-même pour écraserait la méthode dans tous les cas.
Autres conseils
Ou deuxième 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 });
});
Merci à Ken Franquiero, j'ai réussi à résoudre ce problème. Pour d'autres dans le même bateau, voici mon 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>