1.问题:在使用dtree.js的过程中,经常遇到需要加载大数据的情况,可是一次性加载数据太多的情况下会导致网页卡死。
2.处理逻辑:所有就需要分批加载或者动态加载,先加载一部分数据,通过拖动条拖动或者点击子节点按钮,继续加载下一个节点的数据。
3.难处:dtree.js就算动态加载数据,也只是把新数据动态加到他的缓存数组了,如果把新数据显示到网页上的话,dtree.js会刷新所有数据,也就是会把旧的数据重新在网页上再刷一次出来。这样的话,加载数据多了还是会卡。
4.解决方法:修改dtree.js插件,让他添加新节点的时候,只处理新节点的数据,并且显示出来。旧显示数据不动。
5.在dtree.js添加了一个方法,黑色部分代码是dtree.js原生代码,绿色部分代码是自定义代码
// Adds a new node to the node array
dTree.prototype.add = function(id, pid, name, url, title, target, icon,
iconOpen, open) {
for(var i in this.aNodes){//自定义处理不能添加名称相同的节点
var obj = this.aNodes[i];
if(obj.id == id){
return;
}
}
this.aNodes[this.aNodes.length] = new Node(id, pid, na