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

Ami*_*mir 8 javascript jquery frontend json jstree

这是关于jsTree jQuery插件.我一直在努力解决这个问题现在只是为了意识到它不是(原生)可以做到的,所以我想到了下面的问题以下解决方案(这不起作用).

我有一个使用带有ajax的json_data插件的树.打开特定节点后,服务器的结果是一个包含1000多个json节点的数组.响应非常快,但渲染本身需要一段时间(用户体验是他得到令人讨厌的"脚本无响应 - 停止脚本/继续"消息.

我想过,是限制从服务器发送回一个较小的数字,结果该解决方案(比如200),并使用一些"显示更多"标签(或使用jQuery滚动事件),以获取下一个200但是,使用jstree.在每个节点上创建似乎都很慢.然后我注意到jsTree google组 中的这个帖子,其中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);
           }
   });
Run Code Online (Sandbox Code Playgroud)

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

我非常感谢任何其他方法,或者如果有人能够指出我做错了什么.再次,使用:

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

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

谢谢

Ami*_*mir 5

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

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

 var ref = parent_node.attr("id");
 $.each(data, function(i, jsonNode) {
       var node = inst._parse_json(jsonNode);
       node.insertInside(ref);
 });
Run Code Online (Sandbox Code Playgroud)