Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码


Posted in Javascript onAugust 22, 2017

TreePanel继承自Panel,在ExtJS中使用树控件含有丰富的属性和方法实现复杂的功能。其中Ext.tree.TreeNode代表一个树节点,比较常用的属性包括text、id、icon、checked等、异步树Ext.tree.AsyncTreeNode、树加载器Ext.tree.TreeLoader。下面介绍Extjs 中的 Treepanel 实现菜单级联选中效果。

在 treepanel 里添加以下代码即可实现级联选中效果

主要实现了以下效果:

1.点击父级批量设置所有子节点选中状态

2.点击当前节点寻找所有父级并设置选中状态

3.取消当前节点并取消所有子节点选中状态

4.取消当前节点根据需要取消上级节点的选中状态

listeners:{
  checkchange:function(node,checked,eOpts){
    // 批量设置子节点选中效果
    function setChildChecked(pNode){
      pNode.set('checked',checked);
      pNode.eachChild(function(child){
        arguments.callee(child);
      })
    }
    setChildChecked(node);
    // 当前节点取消选中时 需要判断当前节点的父节点下的所有子节点是否都不是选中状态
    function setParentCheckedFalse(currentNode){
      var parentNode = currentNode.parentNode,
        isValid = true;
      if(parentNode != null){
        if(checked == false){
          parentNode.eachChild(function (child) {
            if(child.get('checked') != false){
              isValid = false;
              return false;
            }
          });
          if(isValid){
            parentNode.set('checked',checked);
          }
        }else{
          parentNode.set('checked',true);
        }
        arguments.callee(parentNode)
      }
    }
    setParentCheckedFalse(node);
  }
}

总结

以上所述是小编给大家介绍的Extjs 中 Treepanel 实现菜单级联选中效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript获得选中文本内容的方法
Dec 02 Javascript
默认让页面的第一个控件选中的javascript代码
Dec 26 Javascript
input的focus方法使用
Mar 13 Javascript
详解js中class的多种函数封装方法
Jan 03 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
Jun 17 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
Jul 01 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
Feb 22 Javascript
vue 组件中添加样式不生效的解决方法
Jul 06 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
Feb 25 Javascript
详解vue-cli3多页应用改造
Jun 04 Javascript
解决layer弹出层中表单不起作用的问题
Sep 09 Javascript
JS实现图片切换特效
Dec 23 Javascript
bootstrap3-dialog-master模态框使用详解
Aug 22 #Javascript
关于JS与jQuery中的文档加载问题
Aug 22 #jQuery
bootstrap confirmation按钮提示组件使用详解
Aug 22 #Javascript
bootstrap multiselect下拉列表功能
Aug 22 #Javascript
浅谈Vue父子组件和非父子组件传值问题
Aug 22 #Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 #Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
Aug 22 #Javascript
You might like
example2.php
2006/10/09 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
PHP 多进程 解决难题
2009/06/22 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP 正则表达式小结
2015/02/12 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
input按钮的事件处理大全
2010/12/10 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
库房保管员岗位职责
2014/04/07 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle
Java版 简易五子棋小游戏
2022/05/04 Java/Android
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers