Jstree 在加载时打开特定分支
Jstree Open specific branch on load
我找不到在加载时打开特定 JS 树分支的方法。我当前的树是通过 Ajax 加载的,因此仅显示顶层,所有其他分支在展开时都是通过 Ajax 加载的。我想要的是,如果用户在树中的某个位置加载页面,那么我希望树在树上打开该分支的情况下加载。
我很确定我可以通过将 children
部分传递到该特定节点的 JSON 来将其添加到 JSON。但是,如何加载该分支已经打开的树?
我可以执行加载后功能,这将打开我指定的节点,但这些感觉有点乱,有没有办法在加载时打开分支?
我当前通过 JSON 加载树的函数是这样的:
$.jstree.defaults.core.data = true;
$('.nav-tree').jstree({
'core' : {
'data' : {
'url' : function (node) {
return host+ "treeNavigation?format=json";
},
'data' : function (node) {
return node.id === '#' ? { 'rootid' : 0} : {'rootid' : node.id};
}
}
},
"plugins" : [
"wholerow"
]
});
jstree 有事件 loaded.jstree
用于加载,在此您可以添加代码以使用 $(this).jstree("open_node", 'your node')
.
打开节点
var i = 2;
$('.nav-tree').on('loaded.jstree', function(e, data) {
// invoked after jstree has loaded
$(this).jstree("open_node", $(nodes[i]));
});
$('.nav-tree').jstree({
'core' : {
'data' : {
'url' : function (node) {
return host+ "treeNavigation?format=json";
},
'data' : function (node) {
return node.id === '#' ? { 'rootid' : 0} : {'rootid' : node.id};
}
}
},
"plugins" : [
"wholerow"
]
});
我发现结果在 JSON 被返回。通过添加额外的数据,我们能够在加载到树中的特定位置时打开树。
我们添加到 JSON 的数据是:
"state" : { "opened" : true, "selected" : true}
如果节点有子节点,我们将使用 "children" : true
如果节点进一步向下打开,那么我们将添加子节点详细信息来代替 true
。
例如,我们返回的数据如下所示:
{
"id" : "1",
"Text" : "folder 1",
"state" : {"opened" : true, "selected" : true },
"children" : [{
"id" : "1.1"
"text" : "folder 1.1"
"children" : true
},
{
"id" : "1.2"
"text" : "folder 1.2"
"children" : false
}
} ]
}
上面指定 ID 为 1 的文件夹应该打开并显示以下子项 1.1 和 1.2。 1.1 将是一个有子节点并将在 select.
上打开的节点
我找不到在加载时打开特定 JS 树分支的方法。我当前的树是通过 Ajax 加载的,因此仅显示顶层,所有其他分支在展开时都是通过 Ajax 加载的。我想要的是,如果用户在树中的某个位置加载页面,那么我希望树在树上打开该分支的情况下加载。
我很确定我可以通过将 children
部分传递到该特定节点的 JSON 来将其添加到 JSON。但是,如何加载该分支已经打开的树?
我可以执行加载后功能,这将打开我指定的节点,但这些感觉有点乱,有没有办法在加载时打开分支?
我当前通过 JSON 加载树的函数是这样的:
$.jstree.defaults.core.data = true;
$('.nav-tree').jstree({
'core' : {
'data' : {
'url' : function (node) {
return host+ "treeNavigation?format=json";
},
'data' : function (node) {
return node.id === '#' ? { 'rootid' : 0} : {'rootid' : node.id};
}
}
},
"plugins" : [
"wholerow"
]
});
jstree 有事件 loaded.jstree
用于加载,在此您可以添加代码以使用 $(this).jstree("open_node", 'your node')
.
var i = 2;
$('.nav-tree').on('loaded.jstree', function(e, data) {
// invoked after jstree has loaded
$(this).jstree("open_node", $(nodes[i]));
});
$('.nav-tree').jstree({
'core' : {
'data' : {
'url' : function (node) {
return host+ "treeNavigation?format=json";
},
'data' : function (node) {
return node.id === '#' ? { 'rootid' : 0} : {'rootid' : node.id};
}
}
},
"plugins" : [
"wholerow"
]
});
我发现结果在 JSON 被返回。通过添加额外的数据,我们能够在加载到树中的特定位置时打开树。
我们添加到 JSON 的数据是:
"state" : { "opened" : true, "selected" : true}
如果节点有子节点,我们将使用 "children" : true
如果节点进一步向下打开,那么我们将添加子节点详细信息来代替 true
。
例如,我们返回的数据如下所示:
{
"id" : "1",
"Text" : "folder 1",
"state" : {"opened" : true, "selected" : true },
"children" : [{
"id" : "1.1"
"text" : "folder 1.1"
"children" : true
},
{
"id" : "1.2"
"text" : "folder 1.2"
"children" : false
}
} ]
}
上面指定 ID 为 1 的文件夹应该打开并显示以下子项 1.1 和 1.2。 1.1 将是一个有子节点并将在 select.
上打开的节点