jsTree(3.x)ajax配置处理程序只运行一次?

时间:2015-07-23 12:43:11

标签: javascript jstree

我阅读了有关如何将jjax数据源设置为jsTree组件的documentation。但我真的不明白以下代码:

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

1)为什么我需要使用' url'的功能,它给出的优势是什么?

2)为什么' url'和'数据'处理程序只运行一次(我使用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','数据')?

非常感谢!

1 个答案:

答案 0 :(得分:1)

docs of the config option

中非常清楚
  

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

此处还解释了in the repository

  

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

     

...

     

你也可以将url设置为一个函数,它与data的工作方式完全一样 - 每次需要进行请求时,jstree都会调用你的函数,请求会转到你的任何地方返回此功能。在处理以下网址时,这非常有用:http://example.com/get_children/1

阅读以上链接以熟悉延迟加载以及如何使用它 - 还有很多例子。

相关问题