用jstree中的子树替换单个节点
replace a single node with a subtree in jstree
如何用子树(包含其他子节点)替换 jstree 中的子节点?
我的根节点数据库包含一个子节点配置文件。如果我 select 我想用按需加载的子树替换它的 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);
});
}
但是这里的洞树被我的子树取代了。
我的解决方案是创建一个新节点,将其附加到 grandparent 节点并删除 parent 节点。我还启用了 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);
});
}
如何用子树(包含其他子节点)替换 jstree 中的子节点?
我的根节点数据库包含一个子节点配置文件。如果我 select 我想用按需加载的子树替换它的 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);
});
}
但是这里的洞树被我的子树取代了。
我的解决方案是创建一个新节点,将其附加到 grandparent 节点并删除 parent 节点。我还启用了 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);
});
}