我正在尝试让jsTree与子节点的按需加载一起使用。我的代码是这样的:
jQuery('#introspection_tree')。jstree({ “ json_data”:{ “ ajax”:{ 网址:“ http:// localhost / introspection / introspection / product” } }, “ plugins”:[“主题”,“ json_data”,“ ui”] });
调用返回的json是
[ { “ data”:“套件1”, “ attr”:{ “ id”:“ 1” }, “儿童”:[ [ { “数据”:“硬件”, “ attr”:{ “ id”:“ 2” }, “儿童”:[ ] } ], [ { “数据”:“软件”, “ attr”:{ “ id”:“ 3” }, “儿童”:[ ] } ] ] } ..... ]
每个元素可以有很多孩子,树会很大。当前,这将立即加载整个树,这可能需要一些时间。当用户打开子节点时,我该怎么做以实现按需加载?
提前致谢。
Irishka向我指出了正确的方向,但并不能完全解决我的问题。我在弄弄她的答案,然后想到了这个。仅为了清楚起见,使用了两个不同的服务器功能。第一个列出了顶层的所有产品,第二个列出了给定productid的所有子级:
jQuery("#introspection_tree").jstree({ "plugins" : ["themes", "json_data", "ui"], "json_data" : { "ajax" : { "type": 'GET', "url": function (node) { var nodeId = ""; var url = "" if (node == -1) { url = "http://localhost/introspection/introspection/product/"; } else { nodeId = node.attr('id'); url = "http://localhost/introspection/introspection/children/" + nodeId; } return url; }, "success": function (new_data) { return new_data; } } } });
从函数返回的json数据是这样的(注意state =每个节点中的close状态):
[ { “ data”:“套件1”, “ attr”:{ “ id”:“ 1” }, “ state”:“关闭” }, { “数据”:“ KPCM 049”, “ attr”:{ “ id”:“ 4” }, “ state”:“关闭” }, { “ data”:“ Linux BSP”, “ attr”:{ “ id”:“ 8” }, “ state”:“关闭” } ]
不需要静态数据,该树现在在每个级别上都是完全动态的。