【问题标题】:replace a single node with a subtree in jstree用jstree中的子树替换单个节点
【发布时间】:2016-06-01 08:52:30
【问题描述】:

如何在 jstree 中用子树(包含其他子节点)替换子节点?

我的根节点 db 包含一个子节点 cfg。如果我选择该 cfg 节点,我想将其替换为按需加载的子树。

https://192.168.1.1/db/ 上的 getJson 给了我这个 json 对象:

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

https://192.168.1.1/db/cfg/ 上的 getJson 给了我这个 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);
    });
}

但是这里的洞树被我的子树替换了。

【问题讨论】:

    标签: javascript json jstree


    【解决方案1】:

    我的解决方案是创建一个新节点,将其附加到祖父节点并删除父节点。我还启用了 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);
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多