【问题标题】:jsTree (3.x) ajax config handlers runs only once?jsTree (3.x) ajax 配置处理程序只运行一次?
【发布时间】:2015-07-23 12:43:10
【问题描述】:

我阅读了 documentation 关于如何将 ajax 数据源设置为 jsTree 组件的内容。但我真的不明白下面的代码:

        'data': {
            'url': function (node) {
                return '/ajax/test-nodes';
            },
            'data': function (node) {
                return {'id': node.id};
            }
        }

1) 为什么我需要为 'url' 使用函数,它有什么优势?

2) 为什么 'url' 和 'data' 处理程序只运行一次(我使用 console.log 来检查它),尽管我的 ajax 响应包含许多节点:

[{"id":1,"parent":"#","text":"n1"},{"id":2,"parent":"#","text":"n2"},{"id":3,"parent":"1","text":"child of n1"},{"id":4,"parent":"1","text":"child of n1"},{"id":5,"parent":"3","text":"subChild of n1"}]

3) 我需要从这个函数('url','data')返回什么值?

非常感谢!

【问题讨论】:

    标签: javascript jstree


    【解决方案1】:

    docs of the config option 里很清楚:

    除了标准的 jQuery ajax 选项之外,您还可以为 data 和 url 提供函数,这些函数将在当前实例的范围内运行,并且将传递一个参数来指示正在加载的节点,这些函数的返回值将被使用。

    这里也有说明in the repository

    首先关闭core.data 对象的data 配置选项。如果你用 jQuery 检查,它应该是一个字符串或一个对象。但是 jstree 使得设置函数成为可能。每次 jstree 需要进行 AJAX 调用时,都会调用此函数并将接收一个参数 - 正在加载的节点。此函数的返回值将用作 AJAX 调用的实际“数据”。为了更好地理解,打开演示并在控制台中查看请求。

    ...

    您还可以将url 设置为一个函数,它的工作方式与data 完全相同 - 每次必须发出请求时,jstree 都会调用您的函数,并且请求将转到您在此函数中返回的任何内容.这在处理以下 URL 时很有用:http://example.com/get_children/1

    阅读上面的链接以熟悉什么是延迟加载以及如何使用它 - 还有很多示例。

    【讨论】:

      猜你喜欢
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      相关资源
      最近更新 更多