2017-07-29 9 views
0

私はJointJを使って図を作成しています。JointJsでは、埋め込み要素をドラッグしてすべての要素を一緒に移動できますか?

埋め込まれた要素の数が多い要素を作成すると、その要素をすべてドラッグするだけで簡単にドラッグできます。しかし、私が子供をドラッグすると、彼らは自分の上を移動します。親要素と子要素のいずれかをドラッグして親要素とすべての子要素を移動するにはどうすればよいですか?

答えて

1

それは少しトリッキーです:

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

魔法はこの部分である:

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

がドラッグされている現在のビューを代用することは優れたハックです。ありがとう! –

関連する問題