如果数据未在核心中定义,jstree 不会保存状态?

jstree wont save state if the data not defined in core?

我有一个正在使用 jstree 的应用程序。在此应用程序中,我已将核心的“数据”部分设置为空数组,如下所示:

$("#jstree")
    .jstree({
        "core": {
            "data": [],
            "check_callback" : true,
            "themes": {
                "theme": "default",
                "icons": false
            }
        },
        "plugins": [ "state" ]
    })

我正在使用 jstree.create_node() 在新数据发送到浏览器时以编程方式将新节点添加到树中。当我刷新页面时,即使我使用状态插件,树也不会保持状态。但是,如果我将核心中的 data 字段设置为实际的 JSON 对象,它将按照 state 插件中的描述工作:

 "core": {
            "data":[{"id":"a", "parent":"#", "text":"nodeA"},{"id":"b", "parent":"a", "text":"nodeB"}],
            "check_callback" : true,
            "themes": {
                "theme": "default",
                "icons": false
            }

这两种方式对状态插件的影响有区别吗? 谢谢!

实际上,它只是有效。

jstree({
    "core": {
        "data": [
          {"id":"a", "parent":"#", "text":"nodeA"},{"id":"b", "parent":"a", "text":"nodeB"}
        ],
        "check_callback" : true,
        "themes": {
            "theme": "default",
            "icons": false
        }
    },
    "plugins": [ "state" ]
})

查看 codepen,尝试添加新节点或 expand/collapse 节点,然后重新加载页面。状态会被记住。