2010-05-18 6 views
1

J'essaie d'utiliser Dojo dnd Source (1.4.2) pour créer une interface permettant de déplacer des objets d'une source vers une cible. Cela fonctionne bien, mais je veux changer le comportement afin d'exécuter une vérification avant de faire le D & D, donc si la vérification échoue, un message d'erreur est montré à l'utilisateur, et le D & D n'est pas fait. J'ai essayé l'exemple suivant, trouvé dans un blog:Dojo: faites glisser et déposez Arrêter Faites glisser

dojo.subscribe("/dnd/drop", function(source,nodes,iscopy) 
{ 
    if (nodes[0].id == 'docs_menu'){ 
    dojo.publish("/dnd/cancel"); 
    dojo.dnd.manager().stopDrag(); 
    alert("Drop is not permitted"); 
    } 
    } 
); 

Mais il ne réussit pas dire que this.avatar est nulle. Est-ce que quelqu'un sait comment faire cela?

Merci.

Jose

Répondre

1

La bonne façon de faire ce genre de vérification est de passer outre la fonction checkAcceptance(source, nodes) dans dojo.dnd.Source. Pour plus de détails, référez-vous au doc

0

J'ai rencontré un cas dans lequel j'avais des limitations sur l'ordre des éléments dans la liste. Certains éléments devaient précéder les autres. Le contrôle n'a pas pu être effectué à l'étape checkAcceptance en raison du fait que l'ordre n'est pas défini à ce stade. J'ai résolu cela de la manière suivante.

on(mySource, "Drop", function(source, nodes, copy){ 
    var invalid = false; 
    // ... run the checks to see if the new order is valid 
    // Keep the original order in a parameter named *data* 

    if(invalid == true) { 
     mySource.selectAll(); 
     mySource.deleteSelectedNodes(); 
     mySource.insertNodes(false, data); 
    } 
    else 
    { 
     // Have the data added 
    } 
}); 
Questions connexes