JavaScript

超轻量级php框架startmvc

解析jquery easyui tree异步加载子节点问题

更新时间:2020-04-28 10:35:01 作者:startmvc
easyui中的树可以从标记中建立,也可以通过指定一个URL属性读取数据建立。如果想建立一棵

easyui中的树可以从标记中建立,也可以通过指定一个URL属性读取数据建立。如果想建立一棵异步树,需要为每个节点指定一个id属性值,这样在加载数据时会自动向后台传递id参数。


<ul id="tt"></ul>

编写前台代码:


$('#tt').tree({
 url:'/demo2/node/getNodes' // The url will be mapped to NodeController class and getNodes method
});

为测试用,建立一个节点的数据模型:


@Table(name="nodes")
public class Node extends ActiveRecordBase{
 @Id public Integer id;
 @Column public Integer parentId;
 @Column public String name;
 
 public boolean hasChildren() throws Exception{
 long count = count(Node.class, "parentId=?", new Object[]{id});
 return count > 0;
 }
}

编写后台的控制器代码:


public class NodeController extends ApplicationController{
 /**
 * get nodes, if the 'id' parameter equals 0 then load the first level nodes,
 * otherwise load the children nodes
 * @param id the parent node id value
 * @return the tree required node json format
 * @throws Exception
 */
 public View getNodes(int id) throws Exception{
 List<Node> nodes = null;
 
 if (id == 0){ // return the first level nodes
 nodes = Node.findAll(Node.class, "parentId=0 or parentId is null", null);
 } else { // return the children nodes
 nodes = Node.findAll(Node.class, "parentId=?", new Object[]{id});
 }
 
 List<Map<String,Object>> items = new ArrayList<Map<String,Object>>();
 for(Node node: nodes){
 Map<String,Object> item = new HashMap<String,Object>();
 item.put("id", node.id);
 item.put("text", node.name);
 
 // the node has children, 
 // set the state to 'closed' so the node can asynchronous load children nodes 
 if (node.hasChildren()){
 item.put("state", "closed");
 }
 items.add(item);
 }
 
 return new JsonView(items);
 }
}

官网例子地址:http://www.jeasyui.com/tutorial/tree/tree2.php

demo下载:easyui-tree2_jb51.rar 

重要的事情说三遍!!!


$('#tt').tree({
  method:"POST",
 url:'/demo2/node/getNodes' // The url will be mapped to NodeController class and getNodes method
});

method一定要用POST,GET的话要在URL后面用一个变量来做时间戳处理。

method一定要用POST,GET的话要在URL后面用一个变量来做时间戳处理。

method一定要用POST,GET的话要在URL后面用一个变量来做时间戳处理。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

easyui tree 异步加载 easyui tree 异步 jquery easyui 异步树