2017-07-29 1 views
0

J'utilise JointJs pour créer un diagramme.Dans JointJs, comment puis-je déplacer tous les éléments ensemble en faisant glisser un élément incorporé?

Lorsque je crée un élément avec un certain nombre d'éléments incorporés, je peux facilement les faire glisser en faisant glisser le parent. Cependant, quand je traîne les enfants, ils se déplacent d'eux-mêmes. Comment puis-je déplacer le parent et tous les enfants en faisant glisser le parent ou l'un des éléments enfants?

Répondre

1

il est difficile un peu:

https://jsfiddle.net/vtalas/xk73L947/

la magie est dans cette partie:

paper.on('cell:pointermove', function (cellView, evt) { 

    if (cellView.model.isLink()) { 
    return ; 
    } 

    var parent = cellView.model.getAncestors()[0]; 

    // if we trying to move with embedded cell 
    if (parent) { 

    // cancel move for the child (currently dragged element) 
    cellView.pointerup(evt); 
    var view = paper.findViewByModel(parent); 

    // substitute currently dragged element with the parent 
    paper.sourceView = view; 

    // get parent's position and continue dragging (with the parent, children are updated automaticaly) 
    var localPoint = paper.snapToGrid({ x: evt.clientX, y: evt.clientY }); 
    view.pointerdown(evt, localPoint.x, localPoint.y); 
    } 
}); 
+0

Pour substituer l'affichage actuel traîné est un excellent hack. Merci! –