jsTree异步搜索触发器加载新节点


jsTree asynchronous search - trigger load new nodes

我在我的一个项目上运行了一个运行良好的jsTree实现。JSON数据由PHP/Ajax提供。我在使用搜索插件时遇到了一些麻烦。

jsTree的搜索插件文档中写道:

因此,在您的响应中,您必须以ids:["#root_node","#child_node_3"]的形式返回到节点的路径(没有节点本身)

因此,我的服务器端搜索功能返回一条到匹配节点的路径,如下所示(是的,我是json_encode):

Array( '#1', '#2', '#3', '#5' ); // to match node #10 (leaf node) at the end

当这些值已经存在于DOM中时,客户端搜索功能可以正常工作,但当元素不存在时(例如,当只有根节点打开时),我很难让jsTree遵循此数组中提供的路由来填充树。

我在Stack上看到过类似的问题,但都没有答案。我之所以重新发布,是因为我需要了解这是如何工作的,并且在搜索插件文档中没有找到太多关于如何将jsTree用于异步搜索的信息。

从本质上讲,我希望它使用我的搜索函数返回的数组来触发jsTree的加载事件(类似于load_node_json)-我本以为这应该是开箱即用的,但我遇到了问题。我几乎只是插入了jsTree文档中的示例代码。

我已经弄明白了。我的问题是,我返回了多个数组,其中包含每个匹配节点的路径,如下所示:

Array(
    Array('#root', '#child', '#sub-child'),
    Array('#root', '#child', '#second-sub')
)

事实证明,jsTree的搜索插件A只需要一个单层数组,而B将加载该数组中列出的所有节点,路径顺序不必像文档中建议的那样完全准确。

因此,在我的JSON中,我返回一个包含唯一节点ID的数组,如下所示:

Array( '#root', '#child', '#sub-child', '#second-sub' )

并且搜索插件正在按预期加载节点。

最后没有什么奇怪的,但我认为jsTree文档应该对这件事进行更多的描述,因为我看到其他人也有同样的问题,但没有答案。