jquery. ztree 初始化的时候先获取了一部分节点数据显示树结构,当点击每个节点的时候需要

2025-05-14 14:41:06
推荐回答(2个)
回答(1):

ztree异步加载节点的时候需要提供一个url。

ztree初始化完会向这个url发送一次请求【注意这个时候是不会带参数的】。这个时候你需要返回给它你想要的节点。

ps:我是返回一个根节点给它。

然后在点击此时的节点时候,还是会向这个url发送请求【此时会带配置的参数】,如果你现在的处理方式和初始化之后那样,就还是返回你开始的那些节点给你。

所以,你需要根据不同的动作来处理你的返回值。

  async : {
      enable : true,
      url : _map.url,//异步路径
      autoParam : ["id","name" ],//请求携带节点上的属性值
      dataFilter : function(treeId, parentNode, childNodes) {
      if (!childNodes)return null;
      for (var i = 0, l = childNodes.length; i < l; i++) {
      var _c=childNodes[i];
      _c.isParent=_c.parent;
      childNodes[i].name = _c.name.replace(/\.n/g, '.');
      }
      return childNodes;
      }
      },

//只是提供处理思路 不需要copy

 @RequestMapping("/getOrg")
@ResponseBody
public  List getOrg(HttpServletRequest request,ObjectTypeBean bean,@RequestParam Map para) {
List list = new ArrayList();
if(para.size()<1){
OrgBo bo = null;
bo = orgService.getOrgByNo(GlobalValue.ORGROOT);
list.add(bo);
}else{
String id = para.get("id");//根据父节点ID获取子节点
list = orgTreeService.getChildOrgsForTree(id,Constants.DEFAULT_ORG_RELA_TYPE);//orgSpiService.getChildOrgs(id, "");
}
List   _list = new ArrayList(list.size());
for(OrgBo _b : list){
_list.add(new ObjectTypeBean(_b.getNo(), _b.getParentNo(), _b.getShortName(),!_b.isLeaf()));
}
return _list;
}

回答(2):

建议自己通过展开事件(beforeExpand)来做异步加载,各种需求都可以满足。