2016-06-01 38 views
0

如何在jstree中用子樹(包含其他子節點)替換子節點?用jstree中的子樹替換單個節點

我的根節點db包含一個childnode cfg。如果我選擇該cfg節點,我想用按需加載的子樹進行替換。

的getJSON上https://192.168.1.1/db/使我這個JSON對象:

{ 
"class": "Container", 
"name": "db", 
"nb": 6, 
"objects": [{ 
    "name": "alarms" 
}, { 
    "name": "cfg" 
}, { 
    "name": "commands" 
}, { 
    "name": "csrs" 
}, { 
    "name": "downloads" 
}, { 
    "name": "stats" 
}], 
"pub": false} 

的getJSON上https://192.168.1.1/db/cfg/使我這個JSON對象:

{ 
"class": "Container", 
"name": "cfg", 
"nb": 6, 
"objects": [{ 
    "name": "device" 
}, { 
    "name": "dm" 
}, { 
    "name": "flows" 
}, { 
    "name": "ppp" 
}, { 
    "name": "properties" 
}, { 
    "name": "services" 
}], 
"pub": false 

}

我已經嘗試過這樣的事情:

.bind("select_node.jstree", function (evt, data) { 
    if(data.event) { 

    var node = $('#jstree_demo').jstree(true).get_node(data.node.id) 

    $.getJSON('https://192.168.1.1/db/' + data.node.text, function(jsondata) { 

    var myJson = replace_inline(jsondata) 

    $('#jstree_demo').jstree(true).settings.core.data = myJson; 
    $('#jstree_demo').jstree(true).refresh(true); 
    }); 
} 

但這裏的洞樹被替換爲我的子樹。

回答

0

我的解決方案是創建一個新節點,將它追加到祖父節點上並刪除父節點。我還使用了jstree的排序插件。以便Subtree具有刪除的位置。

.bind("select_node.jstree", function (evt, data) { 
    if(data.event) { 

    var node = $('#jstree_demo').jstree(true).get_node(data.node.id) 

    $.getJSON('https://192.168.1.1/db/' + data.node.text, function(jsondata) { 

    var myJson = replace_inline(jsondata) 

    var position = 'inside'; 
    var parent = $('#jstree_demo').jstree('get_selected'); 
    var grandparent= data.instance.get_node(data.node.parent) 

    var newNode = { state: "open", myJson }; 

    $('#jstree_demo').jstree().create_node(grandparent , myJson, "last", 
           function(){          
              //alert("create node done"); 
             }); 
    $("#jstree_demo").jstree(true).delete_node(node); 
    }); 
}