Jstree在加载时打开特定分支

Sam*_*ook 1 jquery json jstree

我在查找加载时打开特定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"
    ]
});
Run Code Online (Sandbox Code Playgroud)

Sam*_*ook 7

我发现结果是在返回的JSON中.通过添加额外的数据,我们可以在加载到树中的特定位置时打开树.

我们添加到JSON的数据是:

"state" : { "opened" : true, "selected" : true}
Run Code Online (Sandbox Code Playgroud)

如果节点有子节点,我们将使用"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
    } 
    } ]
}
Run Code Online (Sandbox Code Playgroud)

上面指出ID为1的文件夹应该打开并显示以下子项1.1和1.2.1.1将是一个有孩子的节点,并会在选择时打开.