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个节点一起渲染慢).
谢谢
好的,所以我的使用有点偏.
我最终做的是在树视图上调用函数而不是监听事件:
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)
| 归档时间: |
|
| 查看次数: |
4702 次 |
| 最近记录: |