【问题标题】:jsTree asynchronous search - trigger load new nodesjsTree 异步搜索 - 触发加载新节点
【发布时间】:2013-12-01 08:16:19
【问题描述】:

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

jsTree's search plugin documentation 说:

所以在您的回复中,您必须将节点的路径(不包括节点本身)作为 id 返回:["#root_node","#child_node_3"]

...所以,我的服务器端搜索功能正在返回匹配节点的路径,就像这样(是的,我是 json_encodeing 它):

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

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

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

基本上我想要它做的是使用我的搜索函数返回的数组来触发 jsTree 的加载事件(类似于load_node_json) - 我认为这应该可以直接开箱即用,但我有麻烦了。我几乎只是插入了 jsTree 文档中的示例代码。

【问题讨论】:

    标签: php jquery jstree jstree-search


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 我有一个问题:那你的 PHP/SQL 是什么样的?我的意思是为所有匹配节点传递一个带有父节点的多数组不是问题,但是你如何区分 jstree 执行的不同搜索?假设我有 2 个节点,“示例 1”和“示例 2”,但它们都位于不同的分支下,如果 jstree 只需要一个单维数组,那么当我搜索“exa”时如何查询它们?或者你的意思是我只需要传递每个父母的每个 ID?
    • 老实说,我不记得了,那是不久前的事了。据我所知,我的 SQL 结果是所有行,jsTree 组织它
    • 感谢您的回复,但我现在想通了,您只需返回所有父母的 ID,这些父母会导致任何与搜索匹配的孩子的 ID,而不是孩子自己的 ID。 jsTree 然后打开并重新加载(如果需要)分支,直到它到达与搜索匹配的子节点并突出显示它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多