ztree3.1展开某个节点(异步加载)完成后可否回调函数。
ztree吧
全部回复
仅看楼主
level 1
ztreeLove 楼主
输入E8点“查询”品牌分类节点有展开但没有高亮标识答条件的节点
再次点“查询”才有高亮显示出结果
第一次使用ztree.我用ztree3.1做树搜索功能。树是异步加载的,发现getNodesByParamFuzzy方法只是在前面搜索树。后来我用了个ajax去后台查询符合条件的节点的父节点以数据返回前台,然后能过ztree.expandNode()展开,再调用getNodesByParamFuzzy查询不到节点。个人估计是调
getNodesByParamFuzzy 方法时节点异步加载还没结果。我想问有没有方法在父节点的子节点都加载完成后才做某些操作。大家是否也遇到过类似的问题,问不吝赐教啊[呵呵]
部分javascript代码如下:
async:{enable: true,dateType:"json",url:"/bass/discCatAction?method=catTree",autoParam:["ID"],otherParam:["SHOW_DISC","true","DISC_ID",discId]},
var nodeList=[];function updateNodes(nodeList,highlight) {for( var i=0, l=nodeList.length; i<l; i++) {nodeList[i].highlight = highlight;zTree.updateNode(nodeList[i]);}}
function getFontCss(treeId, treeNode) {return (!!treeNode.highlight) ? {color:"#A60000", "font-weight":"bold"} : {color:"#333", "font-weight":"normal"};}
//搜索树function refreshZtree(value){updateNodes(nodeList,false);nodeList= zTree.getNodesByParamFuzzy("name", value);updateNodes(nodeList,true);}
/** * * @param keyVal套餐名称关键字 * @return */function searhTree(keyVal){ajax.remoteCall("bean://com.suntek.bass.disc.provider.DiscCategoryProvider:searchDiscCategory", [keyVal],function(reply) {var obj=reply.getResult();//alert(obj.length);openTreeNode(obj,keyVal);});}
/** * * @param nodecodes * @param keyVal套餐名称关键字 * @return */function openTreeNode(nodecodes,keyVal){var curNode=null;$(nodecodes).each(function(i,n){curNode=zTree.getNodeByParam("CODE", n, null);if(curNode)zTree.expandNode(curNode, true, false, false);});refreshZtree(keyVal);}
2012年02月17日 07点02分 1
level 11
不好意思,时间不够,无法大段阅读和拿来调试,做大概解释如下:
1、 zTree 的 getNodes 的相关方法都是js 执行的,只在zTree 已生成的节点中进行搜索,对于未加载的节点是不会查找的。
2、你这种需求我感觉为何不直接把所有节点数据一次性加载呢? v3.x使用了延迟加载技术,专门提升这种情况的页面加载效率,一次性加载后,就不会有你目前遇到的这种问题了。
3、对于异步加载一定要记住了,要在确保异步加载完成后再去做相应的操作,使用 zTree 默认的异步加载方法,那么就要利用 asyncSuccess 和 asyncError 这两个 callback 来捕获异步加载结束的事件。
希望能对你有所帮助。
2012年02月17日 09点02分 2
level 11
兄弟,zTree 的demo 除了 异步加载那部分(异步加载这部分是php的,你可以模仿语法制作 jsp的),其余的全都是静态页面 html 的,你完全可以方便查看和演示,直接放到你的eclipse 的工程内即可。
2012年02月20日 01点02分 4
1