2017-12-19 18 views
0

ファンシツリーのノードをツリー内の新しい場所にドラッグした後に元の位置に戻すにはどうすればよいですか?たとえば、ノードを新しい位置にドロップした後ユーザーがそれを元に戻すことができないと言った場合にオブジェクトを移動するかどうかを確認するダイアログを表示するかどうかを確認するダイアログが表示され、表示された新しい宛先へ移動する必要があるだけでなく、確認も返されます。またはドラッグ開始位置にドラッグドロップには、元の位置に戻し得るfancytreeドラッグアンドドロップノード元の位置に戻す

$("#tree").fancytree({ 
extensions: ["dnd"], 

// .. other options... 

dnd: { 
    autoExpandMS: 400, 
    draggable: { // modify default jQuery draggable options 
    zIndex: 1000, 
    scroll: false, 
    containment: "parent", 
    revert: "invalid" 
    }, 
    preventRecursiveMoves: true, // Prevent dropping nodes on own descendants 
    preventVoidMoves: true, // Prevent dropping nodes 'before self', etc. 

    dragStart: function(node, data) { 
    // This function MUST be defined to enable dragging for the tree. 
    // Return false to cancel dragging of node. 
    // if(data.originalEvent.shiftKey) ...   
    // if(node.isFolder()) { return false; } 
    return true; 
    }, 
    dragEnter: function(node, data) { 
    return true; 
    }, 
    dragExpand: function(node, data) { 
    // return false to prevent auto-expanding data.node on hover 
    }, 
    dragOver: function(node, data) { 
    }, 
    dragLeave: function(node, data) { 
    }, 
    dragStop: function(node, data) { 
    }, 
    dragDrop: function(node, data) { 
    // revert node to back to it's original place 
    data.otherNode.moveTo(node, data.hitMode); 
    } 
} 

})。

答えて

0

私はfancytreeで働いてきたので、私は完全な詳細を知らないが、私は私が働くかもしれないアイデアを思い付くことができると思うので、それはしばらくしている:

あなたのノードをドロップすると、あなたは2つのアクション実行する必要があります。オフ

  • 火を(あなたは兄弟での位置を維持したい場合はnode.data.prevParent = node.parent()またはprevSibling)

    • はnode.dataであなたの元の位置を永続あなた2つのオプションを使用してダイアログを開き、ノード参照を渡す

    あなたのダイアログbasiclyは、2つのオプションがあります:

    • を受け入れる:node.data.prevParentを削除し、
    • ダイアログを閉じ拒否:node.data.prevParentを取得し、新しい子/兄弟としてノードを移動します。その後ダイアログを閉じる

    これは少し助けてくれることを願っています。あなたがそれを見つけられなかった場合に備えて:これも役に立ちます:fancytree documentation