2016-06-01 1 views
0

jstree에서 자식 노드를 하위 노드 (다른 자식 노드 포함)로 바꿀 수 있습니까?단일 노드를 jstree의 하위 트리로 바꿉니다.

내 루트 노드 db에 자식 노드 cfg가 있습니다. 해당 cfg 노드를 선택하면 필요시로드 된 하위 트리로 바꿉니다.

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

}

이미이 같은 시도 :

https://192.168.1.1/db/cfg/

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

해서 getJSON 나에게이 JSON 객체를 제공합니다 : https://192.168.1.1/db/

해서 getJSON은 저에게이 JSON 객체를 제공합니다

.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의 정렬 플러그인을 가능케했다. 서브 트리에 삭제 된 항목의 위치가 있습니다.

.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); 
    }); 
}