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


Posted in Javascript onMarch 08, 2017

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_3water.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后面用一个变量来做时间戳处理。

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

Javascript 相关文章推荐
jQuery弹出层插件简化版代码下载
Oct 16 Javascript
jquery 笔记 事件
Nov 02 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
JS实现自动变化的导航菜单效果代码
Sep 09 Javascript
js实现表单多按钮提交action的处理方法
Oct 24 Javascript
JavaScript中获取Radio被选中的值
Nov 11 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
Nov 17 Javascript
Vue.js实现一个todo-list的上移下移删除功能
Jun 26 Javascript
JS实现留言板功能[楼层效果展示]
Dec 27 Javascript
浅谈vuex为什么不建议在action中修改state
Feb 02 Javascript
简单了解JavaScript arguement原理及作用
May 28 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
Oct 24 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
Mar 08 #Javascript
jQuery使用EasyUi实现三级联动下拉框效果
Mar 08 #Javascript
教你用十行node.js代码读取docx的文本
Mar 08 #Javascript
jQuery插件zTree实现获取一级节点数据的方法
Mar 08 #Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
Mar 08 #Javascript
原生js实现放大镜特效
Mar 08 #Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
Mar 08 #Javascript
You might like
function.inc.php超越php
2006/12/09 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
php中get_object_vars()在数组的实例用法
2021/02/22 PHP
jQuery 名称冲突的解决方法
2011/04/08 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
webpack3之loader全解析
2017/10/26 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
mac系统安装Python3初体验
2018/01/02 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
python实现宿舍管理系统
2019/11/22 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
EJB的角色和三个对象
2015/12/31 面试题
Java程序员综合测试题
2014/04/25 面试题
门卫人员岗位职责
2013/12/24 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
小学生操行评语
2014/04/22 职场文书
安全生产计划书
2014/05/04 职场文书
搞笑婚前保证书
2015/02/28 职场文书
幼儿园大班教学反思
2016/03/02 职场文书