为主界面加一个顶部区域和底部区域。一个管理系统的界面可以粗分为顶部标题部分、中间数据展示和处理的部分、底部备注和状态部分。

在增加这二个区域之前,我们先在MainModel.js中加入一些数据。

  1. Ext.define('app.view.main.MainModel', {
  2. extend : 'Ext.app.ViewModel',
  3.  
  4. alias : 'viewmodel.main',
  5.  
  6. data : {
  7. name : 'app',
  8.  
  9. // 系统信息
  10. system : {
  11. name : '工程项目合同及资金管理系统',
  12. version : '5.2014.06.60',
  13. iconUrl : ''
  14. },
  15.  
  16. // 用户单位信息和用户信息
  17. user : {
  18. company : '武当太极公司',
  19. department : '工程部',
  20. name : '张三丰'
  21. },
  22.  
  23. // 服务单位和服务人员信息
  24. service : {
  25. company : '无锡熙旺公司',
  26. name : '蒋锋',
  27. phonenumber : '1320528----',
  28. qq : '78580822',
  29. email : 'jfok1972@qq.com',
  30. copyright : '熙旺公司'
  31. }
  32. }
  33. // TODO - add data, formulas and/or methods to support your view
  34. });

在上面的代码中,在data中增加了三个类型的数据,下面分别有些属性。这些值和属性以后可以从后台获得。比如说后台的系统名称改过了,前台刷新一下界面,就能展示新的system.name。这也符合我这个系统的开发宗旨,能够动态的信息尽量动态化,修改的时候只要在前台配置就可以,不要去修改后台的js或java代码。

下面在main的目录下加入二个文件,分别为Top.js和Bottom.js。目录结构如下:

Top.js定义了一个类,其类名为‘app.view.main.region.Top’,注意其类名的前面和其路径是一致的。extjs的类加载机制就是根据类名来找到具体的类文件在哪里的。

  1. /**
  2. * 系统主页的顶部区域,主要放置系统名称,菜单,和一些快捷按钮
  3. */
  4. Ext.define('app.view.main.region.Top', {
  5.  
  6. extend : 'Ext.toolbar.Toolbar',
  7.  
  8. alias : 'widget.maintop', // 定义了这个组件的xtype类型为maintop
  9.  
  10. items : [{
  11. xtype : 'image',
  12. bind : { // 数据绑定到MainModel中data的ystem.iconUrl
  13. hidden : '{!system.iconUrl}', // 如果system.iconUrl未设置,则此image不显示
  14. src : '{system.iconUrl}' // 根据system.iconUrl的设置来加载图片
  15. }
  16. }, {
  17. xtype : 'label',
  18. bind : {
  19. text : '{system.name}' // text值绑定到system.name
  20. },
  21. style : 'font-size : 20px; color : blue;'
  22. }, {
  23. xtype : 'label',
  24. bind : {
  25. text : '{system.version}'
  26. }
  27. }, '->', {
  28. text : '菜单',
  29. menu : [{
  30. text : '工程管理',
  31. menu : [{
  32. text : '工程项目'
  33. }, {
  34. text : '工程标段'
  35. }]
  36. }]
  37. }, ' ', ' ', {
  38. text : '主页'
  39. }, {
  40. text : '帮助'
  41. }, {
  42. text : '关于'
  43. }, {
  44. text : '注销'
  45. }, '->', '->', {
  46. text : '设置'
  47. }]
  48.  
  49. });

上面是Top.js类的定义,这是一个toolbar控件,里面加入了一些label和Button,用于显示系统名称以及用来实现一些操作。toolbar的items下默认的xtype是Button。源代码的注释里面也写入了如何绑定到MainModel 的数据的备注。

下面是Button.js的代码:

  1. /**
  2. * 系统主页的底部区域,主要放置用户单位信息,服务单位和服务人员信息
  3. */
  4. Ext.define('app.view.main.region.Bottom', {
  5.  
  6. extend : 'Ext.toolbar.Toolbar',
  7.  
  8. alias : 'widget.mainbottom',
  9.  
  10. items : [{
  11. bind : {
  12. text : '使用单位:{user.name}'
  13. }
  14. }, {
  15. bind : {
  16. text : '用户:{user.name}'
  17. }
  18. }, '->', {
  19. bind : {
  20. text : '服务单位:{service.company}'
  21. }
  22. }, {
  23. bind : {
  24. text : '服务人员:{service.name}'
  25. }
  26. }, {
  27. bind : {
  28. text : 'tel:{service.phonenumber}'
  29. }
  30. }, {
  31. bind : {
  32. hidden : '{!service.email}', // 绑定值前面加!表示取反,如果有email则不隐藏,如果email未设置,则隐藏
  33. text : 'eMail:{service.email}'
  34. }
  35. }, {
  36. bind : {
  37. text : '©{service.copyright}'
  38. }
  39. }]
  40. });

至此要加入的二个js文件已经就绪,现在我们要把他们放到Main的主页面之中。Main.js也需要修改一下,需要引入上面这二个类,以及把他们放到items下,并设置好位置。

  1. /**
  2. * This class is the main view for the application. It is specified in app.js as
  3. * the "autoCreateViewport" property. That setting automatically applies the
  4. * "viewport" plugin to promote that instance of this class to the body element.
  5. *
  6. * TODO - Replace this content of this view to suite the needs of your
  7. * application.
  8. */
  9. Ext.define('app.view.main.Main', {
  10. extend : 'Ext.container.Container',
  11.  
  12. xtype : 'app-main',
  13.  
  14. uses : ['app.view.main.region.Top', 'app.view.main.region.Bottom'],
  15.  
  16. controller : 'main',
  17. // MVVM架构的控制器的名称,会在当前路径中根据‘Main’ + Controller 来确定文件名
  18. // 这个我没找到其他任何可以自动加载MainController.js的依据,只能作上面的判断了
  19. viewModel : {
  20. type : 'main'
  21. // MVVM架构的viewModel的类型,会在当前路径中根据‘Main’ + Model 来确定文件名
  22. },
  23.  
  24. layout : {
  25. type : 'border' // 系统的主页面的布局
  26. },
  27.  
  28. items : [{
  29. xtype : 'maintop',
  30. region : 'north' // 把他放在最顶上
  31. }, {
  32. xtype : 'mainbottom',
  33. region : 'south' // 把他放在最底下
  34. }, {
  35. xtype : 'panel',
  36. bind : {
  37. title : '{name}'
  38. },
  39. region : 'west', // 左边面板
  40. html : '<ul><li>This area is commonly used for navigation, for example, using a "tree" component.</li></ul>',
  41. width : 250,
  42. split : true,
  43. tbar : [{
  44. text : 'Button',
  45. handler : 'onClickButton'
  46. }]
  47. }, {
  48. region : 'center', // 中间面版
  49. xtype : 'tabpanel',
  50. items : [{
  51. title : 'Tab 1',
  52. html : '<h2>Content appropriate for the current navigation.</h2>'
  53. }]
  54. }]
  55. });

extjs中有许多布局,其中的一个border比较常用,他可以将items分成上、下、左、右、和中间五个部分。经过上面几步以后,在浏览器刷新一下网页,会看到如下结果:

ExtJS5_主界面上加入顶部和底部区域的更多相关文章

  1. 4、手把手教你Extjs5(四)主界面上加入顶部和底部区域

    这一节为主界面加一个顶部区域和底部区域.一个管理系统的界面可以粗分为顶部标题部分.中间数据展示和处理的部分.底部备注和状态部分. 在增加这二个区域之前,我们先在MainModel.js中加入一些数据. ...

  2. 跟我一起学extjs5(05--主界面上增加顶部和底部区域)

    跟我一起学extjs5(05--主界面上增加顶部和底部区域)         这一节为主界面加一个顶部区域和底部区域. 一个管理系统的界面能够粗分为顶部标题部分.中间数据展示和处理的部分.底部备注和状 ...

  3. (NO.00004)iOS实现打砖块游戏(二):实现游戏主界面动画

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 一个内容不错的游戏也要一个好的包装.玩家进入游戏时第一眼看到的是 ...

  4. C# 读取word2003 并且显示在界面上的方法

    1.新建一个windows窗体程序 2. 引入包WinWordControl.dll 3.添加引用 4.引入组件WinWordControl组件 5.主界面上加入按钮 ,opendialog, win ...

  5. Android Tab类型主界面 Fragment+TabPageIndicator+ViewPager

    文章地址: Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager 1.使用ViewPager + PagerAdapter 每个页面的内容都 ...

  6. 国产网络损伤仪SandStorm -- 主界面简介

    国产网络损伤仪SandStorm可以模拟出带宽限制.时延.时延抖动.丢包.乱序.重复报文.误码.拥塞等网络状况,在实验室条件下准确可靠地测试出网络应用在真实网络环境中的性能,以帮助应用程序在上线部署前 ...

  7. 一起撸个简单粗暴的Tv应用主界面的网格布局控件(上)

    这一篇是真的隔了好久了~~,也终于可以喘口气来好好写博客了,这段时间实在是忙不过来了,迭代太紧.好,废话不多说,进入今天的主题. 效果 图一是Tv应用:当贝市场的主页 图二是咱自己撸的简单粗暴的 Tv ...

  8. 重复点击主界面(TabBar)按钮刷新界面--点击状态栏回到顶部

    1.监听按钮点击   2.判断是否是点击的同一个按钮(记录上次点击的按钮)   3.当重复点击相同按钮时,需要获取当前按钮对应控制器刷新界面      3.1 判断是否重复点击按钮,代码写在哪里?   ...

  9. WPF技术触屏上的应用系列(六): 视觉冲击、超炫系统主界面、系统入口效果实现

    原文:WPF技术触屏上的应用系列(六): 视觉冲击.超炫系统主界面.系统入口效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体 ...

随机推荐

  1. poj2245

    题目分析: 抽奖 在德国乐透你需要从49个数(1,2,3......49)里面选择6个数,玩德国乐透一个流行的策略-尽管他不会增加你获奖的机会-选择一个子集S包含k(k>6)个数从这49个数字里 ...

  2. Multipath多路径冗余全解析

    一.什么是multipath 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系.也就是说 ...

  3. halt和shutdown 的区别

    1.halt -h 标准情况下是关机 但是要手动关闭电源 .有些发行版增强了halt脚本 使其可以关闭电源 halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核. 2. ...

  4. javascript 鼠標拖動功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. c++逆向 vector

    最近弄Android c/c++方面的逆向,发现c++的类,stl模板,在逆向的时候相比c语言都带来了不小的困难. 今天自己写了个小程序,然后逆向分析了一下 vector<int> arr ...

  6. JNI之有必要的优化设计

    对象指针的保存 在上一章中,c函数中将会获取的一些值,例如:FieldID.MethodID.jclass等数据.这些数据如果定义在函数内部,在函数返回时就会丢失.很多时候,在java与c的多次交互中 ...

  7. Linux 下Mysql自动备份脚本

    backdb.sh 文件 #!/bin/bash USER="root" PASSWORD="888888" DATABASE="mydb" ...

  8. Android内存泄漏的各种原因详解

    转自:http://mobile.51cto.com/abased-406286.htm 1.资源对象没关闭造成的内存泄漏 描述: 资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我 ...

  9. 12、SQL Server 行列转换

    SQL Server 行转列 在SQL Server 2005中PIVOT 用于将列值转换为列名(行转列),在SQL Server 2000中是没有这个关键字的 只能用case语句实现. --创建测试 ...

  10. SQL 生成可配置流水号

    需求背景每执行一次方法,根据公式返回最新的流水号.第一次使用时需要先插入一条数据,BizSeqValue 为流水起始号:A2014030000,Formula 为公式:A[yyyy][mm][c4], ...