由于项目需要需要用到异步加载树的子节点,根节点在页面加载时已经加载,需求是在根节点被点击时展开时判断是否有子节点,没有通过异步方式从服务器加载。
可是,弄了半天,也百度了很久,发现创建出来的根节点根本就不可能包含子节点,出现了下面的情况:
如图:
这是怎么回事呢,查了下文档,我难道要指定个空的children吗?我有尝试在前台加上了一个空的children,
treeDatas.push({id:key,text:alltablenames[key],children:[]});
可是还是这个样子,怎么是好呢?
继续看文档,发现一个属性state,节点状态是否关闭,关闭就用closed,难道与这个有关,设置state为closed,如下:
treeDatas.push({id:key,text:alltablenames[key],children:[],state:'closed'});
跑起来看看效果
这下果然行了,原来如果想含有子节点,但是当前子节点有没有需要加上state属性,感觉有api文档在手,程序要还写多了。
最后附上异步加载子节点的方法:
onBeforeExpand:function(node){
$('#conditionName').combotree("tree").tree("options").url= '${basePath}table/fields?tableName='+node.id;
}
就这样了!