[ExtJS5学习笔记]第十七节 Extjs5的panel组件增加accodion成为折叠导航栏

本文主要是介绍[ExtJS5学习笔记]第十七节 Extjs5的panel组件增加accodion成为折叠导航栏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文地址:http://blog.csdn.net/sushengmiyan/article/details/39102335

官方例子: http://dev.sencha.com/ext/5.0.1/examples/window/layout.html?theme=neptune

本文作者:sushengmiyan

------------------------------------------------------------------------------------------------------------------------------------

做一个系统的话,一般都需要有导航栏啊,工具条啊这些东西。看到Ext官方例子中有个window的layout window ,看了下效果看起来蛮不错,就学习了下,加入到了我之前做的extjs5登录系统中。这样看起来就像是一个系统了。

先看下官方例子的效果吧,看起来很不错的哟:


看下官方给的代码:

代码地址:http://dev.sencha.com/ext/5.0.1/examples/window/layout.js

代码内容:

Ext.require(['Ext.tab.*','Ext.window.*','Ext.tip.*','Ext.layout.container.Border'
]);
Ext.onReady(function(){var win,button = Ext.get('show-btn');button.on('click', function(){if (!win) {win = Ext.create('widget.window', {title: 'Layout Window with title <em>after</em> tools',header: {titlePosition: 2,titleAlign: 'center'},closable: true,closeAction: 'hide',maximizable: true,animateTarget: button,width: 600,minWidth: 350,height: 350,tools: [{type: 'pin'}],layout: {type: 'border',padding: 5},items: [{region: 'west',title: 'Navigation',width: 200,split: true,collapsible: true,floatable: false}, {region: 'center',xtype: 'tabpanel',items: [{// LTR even when example is RTL so that the code can be readrtl: false,title: 'Bogus Tab',html: '<p>Window configured with:</p><pre style="margin-left:20px"><code>header: {\n    titlePosition: 2,\n    titleAlign: "center"\n},\nmaximizable: true,\ntools: [{type: "pin"}],\nclosable: true</code></pre>'}, {title: 'Another Tab',html: 'Hello world 2'}, {title: 'Closable Tab',html: 'Hello world 3',closable: true}]}]});}button.dom.disabled = true;if (win.isVisible()) {win.hide(this, function() {button.dom.disabled = false;});} else {win.show(this, function() {button.dom.disabled = false;});}});
});
现在看看我的最后成果:

看起来是不是跟官方的差不多呀,哈哈。这就是模仿咯,能知道如何看官方的例子了,感觉就来啦,可以顺利上手的样子了。

哈哈。

看看需要做哪些就可以达到如上效果吧!

1.增加菜单项的内容,就是 学生档案、教室档案那些,这个我们暂时放在mainmodel下的data里面,这个自己制定,可以直接在panel的items定死也是可以的,这里动态获取一下。

/*** 应用程序主要视图.author: sushengmiyan*blog: http://blog.csdn.net/column/details/sushengextjs5.html*/
Ext.define('oaSystem.view.main.MainModel', {extend: 'Ext.app.ViewModel',alias: 'viewmodel.main',//数据模块  ViewModel中的data可以在指定当前ViewModel的地方获取data: {name: 'oaSystem',// 左边菜单的加载NavigationMenu : [{text : '档案管理',// 菜单项的名称description : '', // 菜单项的描述expanded : true,// 在树形菜单中是否展开items : [{text : '学生档案',// 菜单条的名称module : 'StudentArchives',// 对应模块的名称glyph : 0xf00b // 菜单条的图标字体},{text : '教师档案',module : 'TeacherArchives',glyph : 0xf1a2},{text : '教室资源',module : 'RoomArchives',glyph : 0xf183}]},{text : '系统设置', description : '', items : [{text : '系统参数', module : 'SytemInfo', glyph : 0xf0f7}, {text : '高级设置',module : 'HigherSetting',glyph : 0xf02e}]}					]},  //增加 data, formulas and/or methods 来支持你的视图
});
在regions目录下新建Left.js内容如下:

Ext.define(//左侧导航条'oaSystem.view.main.region.Left',{extend: 'Ext.panel.Panel',  alias: 'widget.mainleft',  title: '折叠菜单',  glyph: 0xf0c9, split: true,collapsible: true,floatable: false,		tools: [{type: 'pin'}],header: {titlePosition: 2,titleAlign: 'center'},maximizable: true,layout: {  type: 'accordion',  animate: true, //点击的时候有动画动作 titleCollapse: true,enableSplitters: true,hideCollapseTool: true,},  viewModel: 'main', //指定后可获取MainModel中data数据块 initComponent: function() {  this.items = [];  var menus = this.getViewModel().get('NavigationMenu');  for (var i in menus) {//先获取分组显示var group = menus[i];  var leftpanel = {  menuAccordion : true,  xtype: 'panel',  title: group.text,  bodyStyle: {  padding: '10px'  },  layout: 'fit',  dockedItems: [{  dock : 'left',  xtype : 'toolbar',  items : []  }],  glyph: group.glyph  };//遍历分组下的菜单项				for (var j in group.items) {  var menumodule = group.items[j];  leftpanel.dockedItems[0].items.push({    text: menumodule.text,  glyph: menumodule.glyph,  handler: 'onMainMenuClick'  });  }  this.items.push(leftpanel);  }  this.callParent(arguments);  },  });
在main.js中引入这个单元:

uses:['oaSystem.view.main.region.Top', 'oaSystem.view.main.region.Bottom','oaSystem.view.main.region.Left'],

在items中增加这个折叠导航:

,{  xtype : 'mainleft',  region : 'west', // 左边面板  width : 250,  split : true  }

OK,完工。现在就可以有个折叠导航啦





这篇关于[ExtJS5学习笔记]第十七节 Extjs5的panel组件增加accodion成为折叠导航栏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751857

相关文章

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

kotlin中的行为组件及高级用法

《kotlin中的行为组件及高级用法》Jetpack中的四大行为组件:WorkManager、DataBinding、Coroutines和Lifecycle,分别解决了后台任务调度、数据驱动UI、异... 目录WorkManager工作原理最佳实践Data Binding工作原理进阶技巧Coroutine

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb