【工作笔记】从零开始学ExtJs6( 四)—— 首页树状菜单和Tab页的实现
2017-04-13 10:58
281 查看
题外话
做一个项目要向完成对应的模块,肯定是先要有树形菜单结构,点击对应才dna跳转到相应界面,在extjs中如何实现。是上周遇到的一个小问题,现在做做记录
app目录下创建data/menuData.json文件(需要的菜单格式)
大致格式
加载Menu数据
在主页中显示
Tab切换
在首页中添加点击逻辑MainController
左边区域Left.js中监听树形菜单的变化
做一个项目要向完成对应的模块,肯定是先要有树形菜单结构,点击对应才dna跳转到相应界面,在extjs中如何实现。是上周遇到的一个小问题,现在做做记录
app目录下创建data/menuData.json文件(需要的菜单格式)
大致格式
... "body": [ { "menu": 1, "menuCode": "0001", "menuName": "系统管理", "enable": 1, "sortOrder": 1, "note": "系统管理", "parentMenuId": 0, "parentMenuCode": null, "menuLevel": 1, "authCategoryCode": "", "authCode": "", "moduleName": "", //跳转路径 "childMenus": [{},{},{}] ...
加载Menu数据
Ext.define('app.store.main.MenuStore', { extend:"Ext.data.TreeStore", alias: 'store.menuStore', //storeId:"menuStoreId", proxy: { //异步加载数据 // actionMethods: { // read: "POST" //请求方式 // }, type: "ajax", url: "app/data/data.json", //本地文件读取 noCache: false, //paramsAsJson: true, reader: { //渲染数据 type: "json", //指定类型 transform: { //回调:处理数据。相当于ajax的success方法 fn: function (data) { if ( Ext.isEmpty(data) || Ext.isEmpty(data.body)) { alert("没有数据"); } return Ext.Array.map(data.body, function (obj) { //map 键值对查找遍历 var tmp = {}; tmp.id = 'menus'+obj.menuCode; //显示编号 tmp.text = obj.menuName; //显示内容 tmp.moduleName = obj.moduleName; //跳转地址 tmp.expanded=false, //是否伸展 tmp.children = []; var children = obj.childMenus; if (!Ext.Object.isEmpty(children)) { tmp.children = Ext.Array.map(children, function (child) { return { id:'menus'+child.menuCode, text:child.menuName, moduleName:child.moduleName, leaf:true //是否为叶子节点 }; }); } return tmp; }); } } } }, folderSort: true, //排序 autoLoad: false //自动加载 });
在主页中显示
Ext.define('report.view.main.region.Left', { extend: 'Ext.tree.Panel', alias: 'widget.mainleft', title: '权限管理', lines: false, rootVisible: false, /*border: false, //边框 //隐藏根节点 autoShow : true,*/ store:Ext.create('app.store.main.MenuStore', { storeId: "menuStoreId" //如果将storeId设置在store中无法访问,不知道怎么回事 }), initComponent: function () { var store = Ext.data.StoreManager.lookup("menuStoreId");//得到menuStore store.load();//加载菜单 this.callParent(arguments); } });
Tab切换
在首页中添加点击逻辑MainController
// 选择了主菜单上的菜单后执行 onMainMenuClick: function (menuitem) { var maincenter = this.getView().down('maincenter'); var moduleName = menuitem.get('moduleName'); var newTab = maincenter.getComponent(menuitem.get('id')); if (!newTab && menuitem.get('leaf')) { maincenter.setActiveTab(maincenter.add({ xtype: Ext.create(moduleName,{ closable: true, id: menuitem.get('id'), reorderable: true, title: menuitem.get('text') }) })); } else { //如果tab中存在,那么就直接将节点指向这个页面 maincenter.setActiveTab(newTab); } },
左边区域Left.js中监听树形菜单的变化
listeners: { //点击树形菜单中间页面产生变化 itemclick: function (view, record, item, index, e, eOpts) { this.up('app-main').getController().onMainMenuClick(record); } }
相关文章推荐
- 【工作笔记】从零开始学ExtJs6( 四)—— 首页树状菜单和Tab页的实现
- 【工作笔记】从零开始学ExtJs6(三)—— 首页搭建
- 【工作笔记】从零开始学ExtJs6(三)—— 首页搭建
- 【工作笔记】从零开始学ExtJs6(四)—— 常用api小记
- 学习笔记:一个操作系统的实现--搭建你的工作环境
- BBS项目笔记之五:BBS论坛首页的实现
- 用jquery实现的简单树状菜单
- Struts2树状菜单实现 (转)
- 简单的树状导航菜单的实现
- JQuery学习笔记之实现菜单的下拉
- [学习笔记]小型论坛功能——实现树状结构的主题贴显示的类[2]
- android 从xml文件读取数据初始化,并实现无分级的树状菜单的显示
- ECSHOP:首页实现显示子分类商品,并实现点击Tab页切换分类商品
- html和css实现一级菜单和二级菜单学习笔记
- jQuery实现级联菜单效果(仿淘宝首页菜单动画)
- Extjs4开发笔记(三)——菜单的实现
- Struts2树状菜单三种实现方式
- JavaScript实现树状菜单
- GeneralSanguo工作笔记2——使用Scroller实现背景的拖拽移动
- 实现博客园首页导航菜单效果 前台代码