发现很难让 jsTree 插件在关闭状态下初始化

Finding difficulty trying to get the jsTree plugin to initialize in a closed state

大家下午好。

我们正在为用户配置文件设置权限树。
我们使用此处的 jsTree 插件:jQuery jsTree Plugin

过版本为:3.1.0
他们当前版本为:3.1.0

这是我们的用法:

/* Initialize any jsTress passed in. */
$( "." + section + "-panel-" + panel ).find( "div[class*='jstree']" ).each(function(){
    $(this).jstree( {   "core"      : { "data" : $.parseJSON( $(this).prev().html() ) },
                        "plugins"   : [ "checkbox","wholerow" ]  
                    } );

    /* Try to force close-all tree nodes. */
    $(this).jstree( "close_all",-1 );
})

我们手动尝试强制关闭这里的所有节点,尽管它不起作用。 JSON 传入初始化方法的数据包括节点状态属性。

查看实际数据样本:

[
{ 
    "id":"ADMIN",
    "text":"ADMIN",
    "state":
    {
        "selected":false
    },
    "children":
    [
        {   
            "id":"ADMIN_ADD_STAFF",
            "text":"ADMIN_ADD_STAFF",
            "state":
            {
                "opened":false,
                "disabled":false,
                "selected":true
            }
        },
        {
            "id":"ADMIN_NEW_MSG",
            "text":"ADMIN_NEW_MSG",
            "state":
            {
                "opened":false,
                "disabled":false,
                "selected":true
            }
        }
        /* Truncated here for brevity of question. */
        /* See link below for complete data object. */
    ]
}
]

有关完整数据对象的副本,请参阅 PasteBin

如您所见,opened 属性始终为 false,但我们发现节点始终在打开状态下初始化。

如果您手动关闭节点,节点将关闭。 注意:我们没有使用在浏览器中启用节点状态持久性的插件。

似乎无法理解为什么节点不会初始化为关闭... 提前致谢!

确保在 ready.jstree 事件触发后调用 close_all

$(this),jstree(...).on('ready.jstree', function (e, data) {
  data.instance.close_all();
});

也可以简单的配置jsTree不展开onload选中的节点: http://www.jstree.com/api/#/?q=expand&f=$.jstree.defaults.core.expand_selected_onload

$(this).jstree({
  core : {
    expand_selected_onload : false,
    ...

此致, 伊万