本文地址: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 read
rtl: 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成为折叠导航栏的更多相关文章

  1. [ExtJS5学习笔记]第二十七节 CMD打包错误 Error C2009: YUI Parse Error (identifier is a reserved word => debugger;)

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/41242993 本文作者:sushengmiyan ------------------ ...

  2. [ExtJS5学习笔记]第二十七节 CMD打包错误 Error C2009: YUI Parse Error (identifier is a reserved word =&gt; debugger;)

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/41242993 本文作者:sushengmiyan ------------------ ...

  3. [ExtJS5学习笔记]第二十一节 Extjs5中使用config配置给ext.widget或者create方法传递参数

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39252805 官方例子:http://docs.sencha.com/extjs/5. ...

  4. [ExtJS5学习笔记]第十节 Extjs5新增特性之ViewModel和DataBinding

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38612721 本文作者:sushengmiyan ------------------ ...

  5. [ExtJS5学习笔记]第二十节 Extjs5配合数组的push方法,动态创建并加载组件

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39226773 官方例子:http://docs.sencha.com/extjs/5. ...

  6. [ExtJS5学习笔记]第七节 Extjs5的组件components及其模板事件方法学习

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38487519 本文作者:sushengmiyan ------------------ ...

  7. [ExtJS5学习笔记]第四节 欢迎来到extjs5-手把手教你实现你的第一个应用

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38331347 本文作者:sushengmiyan ------------------ ...

  8. [ExtJS5学习笔记]第五节 使用fontawesome给你的extjs5应用增加字体图标

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38458411本文作者:sushengmiyan-------------------- ...

  9. [ExtJS5学习笔记]第五节 使用fontawesome给你的extjs5应用添加字体图标

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38458411本文作者:sushengmiyan-------------------- ...

随机推荐

  1. ●洛谷P2934 [USACO09JAN]安全出行Safe Travel

    题链: https://www.luogu.org/problemnew/show/P2934 题解: 最短路(树),可并堆(左偏堆),并查集. 个人感觉很好的一个题. 由于题目已经明确说明:从1点到 ...

  2. bzoj 2734: [HNOI2012]集合选数

    题目描述 <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不能在该子集中. 同学们不喜 ...

  3. C++标准库之stack

    C++库以提供"模板"为主.所谓模板,是指不必预先制定类型的函数或类.我们可以借助STL(标准模板库 Standard Template Library, STL)提供的高效算法来 ...

  4. audioplayer.js插件的使用及小bug

    之前在项目里用audioplayer.js做的一个页面,改了布局样式,还有插件自身有个bug就是audio添加autoplay属性后有两个音频播放,其中一个无法控制,会一直播放,我查看了官网的demo ...

  5. python map filter reduce的优化使用

    这篇讲下python中map.filter.reduce三个内置函数的使用方式,以及优化方法. map()函数 map()函数会根据提供的函数对指定序列做映射. 语法: map(function,it ...

  6. Lock锁子类了解一下

    前言 回顾前面: 多线程三分钟就可以入个门了! Thread源码剖析 多线程基础必要知识点!看了学习多线程事半功倍 Java锁机制了解一下 AQS简简单单过一遍 只有光头才能变强! 上一篇已经将Loc ...

  7. 解读Raft(二 选举和日志复制)

    Leader election Raft采用心跳机制来触发Leader选举.Leader周期性的发送心跳(如果有正常的RPC的请求情况下可以不发心跳)包保持自己Leader的角色(避免集群中其他节点认 ...

  8. 有趣的冷知识:编程中Foo, Bar 到底什么意思?

    转自:编程中Foo, Bar 到底什么意思? 1 前言 在很多国外计算机书本和一些第三份开源软件的Demo中经常用到两个英文单词Foo,Bar.这到底是什么意思呢?从步入屌丝界的IT生活见到这两个单词 ...

  9. 最小费用最大流(luogu P3381 【模板】最小费用最大流)

    题目链接 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S. ...

  10. 【C#复习总结】匿名类型由来

    1 属性 这得先从属性开始说,为什么外部代码访问对象内部的数据用属性而不是直接访问呢,这样岂不是更方便一些,但是事实证明直接访问是不安全的.那么,Anders Hejlsberg(安德斯·海尔斯伯格) ...