javascript – jsTree:progressive_render,带有来自数组的ajax / render节点

这是关于 jsTree jQuery plugin.我一直在努力解决这个问题一段时间才意识到这一点
不(本机地)可以这样做,所以我想到了下面我的问题的解决方案(这是行不通的).

我有一个使用带有ajax的json_data插件的树.一旦你打开
一个特定的节点,服务器的结果是一个超过1000的数组
json节点.响应非常快,但渲染本身需要
一段时间(用户体验是他得到了烦人的“脚本”
响应 – 停止脚本/继续“消息.

我想到的解决方案是限制发回的结果
服务器数量较少(比如200)并使用一些“显示更多”
label(或使用jQuery滚动事件)来获取一个200.
但是,在每个节点上使用jstree.create似乎是
非常慢.
然后我注意到这个线程on the jsTree google group
其中Ivan建议可以一次创建所有节点
parse_json函数 – 这对我不起作用.

我正在尝试做的简短代码片段:
(点击“显示更多”标签时):

$.ajax({
   // send data to server in order to get the relevant json back
   }(),success : function (r) {
           var parent_node = data.inst._get_parent(data.rslt.obj);
           var id = parent_node.attr("id");
           $("#root_tree").jstree("_parse_json",r,parent_node );
           $("#root_tree").jstree("clean_node",parent_node,false);
           }
   });

上面的示例不呈现json并将子项添加
父节点.

我会高度赞赏任何其他方法或任何人都可以指出
我做错了什么.
再次,使用:

$.each(r,function(i,node) {
       var id = parent_node.attr("id");
       $("#root_tree").jstree("create","#"+id,"last",node,false,true);
});

有效,但非常慢(比渲染所有1000个节点慢)
一起).

谢谢

解决方法

好的,所以我的使用有点偏.

我最终做的是在树视图上调用函数而不是监听事件:

var ref = parent_node.attr("id");
 $.each(data,jsonNode) {
       var node = inst._parse_json(jsonNode);
       node.insertInside(ref);
 });

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...