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

时间:2013-12-01 08:16:19

标签: php jquery jstree jstree-search

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

jsTree's search plugin documentation说:

  

所以在你的回复中你必须将节点的路径(没有节点本身)作为id返回:[“#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文档中的示例代码。

1 个答案:

答案 0 :(得分:4)

我已经想到了这一点。我的问题是我正在返回多个数组,其中包含每个匹配节点的路径,如下所示:

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

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

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

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

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

最后没有什么花哨的东西,但我认为jsTree文档在这个问题上应该更具描述性,因为我看到其他人遇到同样的问题但没有答案。