2012-05-07 6 views
12

Voglio implementare la funzionalità di spostamento per un nodo in jstree. È la mossa che deve essere implementata o il drag and drop? Alias, sarà bello avere un codice funzionante dal binding del contenitore all'evento e al codice dell'evento.jstree move, drag and drop

risposta

18

È necessario utilizzare il plugin dnd solo se non è necessario applicare alcuna regola di spostamento (non consentire che alcuni nodi vengano spostati su altri nodi, ecc.) Se è necessario applicare le regole di spostamento, è possibile aggiungere il plugin crrm.

Vedere lo Reorder only demo della documentazione dnd pluign per un esempio di questo. La documentazione è molto scarsa, quindi dovrai utilizzare lo strumento di sviluppo del tuo browser per vedere quali sono le proprietà del parametro per il callback check_move. Per l'esempio nella documentazione, m.o fa riferimento al nodo trascinato e m.r fa riferimento al nodo di destinazione.

Sarà inoltre probabilmente bisogno di essere avvisati quando un nodo viene spostato, in modo da legare alla manifestazione move_node.jstree quando si inizializza l'albero:

$("#treeHost").jstree({ 
    ... 
    }).bind("move_node.jstree", function (e, data) { 
     // data.rslt.o is a list of objects that were moved 
     // Inspect data using your fav dev tools to see what the properties are 
     }); 
    }) 
+0

Grazie Bojin. Questo è stato utile. –

+3

Sembra che il plug-in crrm sia stato rimosso nella versione 3 del plug-in a partire da febbraio 2014.. . qualche suggerimento su come lavorare con obiettivi di rilascio condizionali data questa moderazione? –

+0

Dovremmo usare il plugin Tipi ora in combinazione con DnD per realizzare ciò che era in CRRM? –

10
$("#demo1").jstree({ 
.... 
.bind("move_node.jstree", function (e, data) { 

    /* 
    requires crrm plugin 

    .o - the node being moved 
    .r - the reference node in the move 
    .ot - the origin tree instance 
    .rt - the reference tree instance 
    .p - the position to move to (may be a string - "last", "first", etc) 
    .cp - the calculated position to move to (always a number) 
    .np - the new parent 
    .oc - the original node (if there was a copy) 
    .cy - boolen indicating if the move was a copy 
    .cr - same as np, but if a root node is created this is -1 
    .op - the former parent 
    .or - the node that was previously in the position of the moved node */ 

    var nodeType = $(data.rslt.o).attr("rel"); 
    var parentType = $(data.rslt.np).attr("rel"); 

    if (nodeType && parentType) { 
     // TODO! 
    } 
}) 
});