extjs5(05--主界面上加入顶部和底部区域)

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

在增加这二个区域之前,我们先在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。目录结构如下:

enefoyei

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 });

 

t42crfuk

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

zmicfo13

转载于:https://www.cnblogs.com/isonre/p/4703873.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java mongo 查询数组_MongoDB查询(数组、内嵌文档)

一、简介我们上一篇介绍了db.collection.find()可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段&#xff0c;我们今天介绍了对数组和内嵌文档的查询操作&#xff0c;尤其是对$elemMatch 同样可以用在find方法的第二个参数来限制返回数组…

手机触摸屏的分类和原理,供大家选择手机时用

转载自&#xff1a;http://www.51testing.com/?uid-144635-action-viewspace-itemid-216296 必大家很关心的一个问题就是手机的触摸屏寿命是多少吧&#xff01;还有就是到底是电阻式触摸屏&#xff08;诺基亚的&#xff09;好还是电容式触摸屏&#xff08;iPhone等&#xff09…

Actionbarsherlock Demo 浅析 :Overlay

让Actionbar处于覆盖模式&#xff0c;当Activity需要显示大量滚动的内容&#xff0c;尤其是包含图片内容的时候&#xff0c;Overlay模式非常有效。 requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);//将Actionbar设置为Overlay模式。 getSupportActionBar().setBackg…

浅析C#中构建多线程应用程序

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 引言 1.理解多线程 2. 线程异步与线程同步 3.创建多线程应用程序 3.1通过System.Threa…

58同城高性能移动Push推送平台架构演进之路

2019独角兽企业重金招聘Python工程师标准>>> 本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段&#xff0c;并介绍了什么是移动Push推送&#xff0c;为什么需要&#xff0c;原理和方案对比&#xff1b;移动Push推送第一阶段&#xff08;单平台&#xff…

java不规则算法_分布式id生成算法 snowflake 详解

背景在复杂分布式系统中&#xff0c;往往需要对大量的数据和消息进行唯一标识。如在支付流水号、订单号等&#xff0c;随者业务数据日渐增长&#xff0c;对数据分库分表后需要有一个唯一ID来标识一条数据或消息&#xff0c;数据库的自增ID显然不能满足需求&#xff0c;此时一个…

Android中下载、安装和卸载(原)

应用场景&#xff1a;在检查版本更新的时候经常需要从服务器端下载然后安装到手机中 使用工具&#xff1a; XUtils&#xff0c;这个开源的框架真的是需要花大把时间去阅读和理解的&#xff0c;十分有用的&#xff0c;on the way &#xff01; fighting&#xff01; 下载&#x…

python对文件进行读写操作

2019独角兽企业重金招聘Python工程师标准>>> python进行文件读写的函数是open或file file_handler open(filename,,mode&#xff09; Table mode 模式描述r以读方式打开文件&#xff0c;可读取文件信息。w以写方式打开文件&#xff0c;可向文件写入信息。如文件存在…

[转]VisualStudio如何组织解决方案的目录结构

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 解决方案与项目&#xff1a; 从VC6之后VC系列就使用解决方案&#xff08;Solution&…

java几种删除_几种删除Linux目录的方法

在Linux中有很多方法可以删除目录&#xff0c;在图形化界面可以利用文件管理器&#xff0c;或者通过终端删除。本文将介绍在文本界面使用命令删除目录。使用rmdir删除目录Rmdir命令间成“remove directory”&#xff0c;用于删除空目录的命令。例如&#xff0c;删除一个名为“M…

【SpringMVC】SpringMVC系列6之@CookieValue 映射请求Cookie 值

6、CookieValue 映射请求Cookie 值 6.1、示例 CookieValue 可让处理方法入参绑定某个 Cookie 值&#xff0c;示例如下&#xff1a;

杭电OJ-2104_hide handkerchief超简洁代码

#include<iostream> using namespace std; int n, m;; int zz(int a, int b) {return b0 ? a: zz(b, a%b); } int main() {while (cin >> n >> m&&n ! -1 && m ! -1)cout << (nb(n, m) 1 ? "YES" : "POOR Haha"…

c# Invoke和BeginInvoke

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 转自&#xff1a;http://blog.3snews.net/html/30/34530-27563.html在多线程编程中&am…

Oracle手边常用70则脚本知识汇总

Oracle手边常用70则脚本知识汇总 作者&#xff1a;白宁超 时间&#xff1a;2016年3月4日13:58:36 摘要: 日常使用oracle数据库过程中&#xff0c;常用脚本命令莫不是用户和密码、表空间、多表联合、执行语句等常规操作。另外表的导入导出也很常用&#xff0c;这些脚步命令之前都…

php常见的面试题目

一. 基本知识点1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。200 : 请求成功&#xff0c;请求的数据随之返回。301 : 永久性重定向。302 : 暂时行重定向。401 : 当前请求需要用户验证。403 : 服务器拒绝执行请求&#xff0c;即没有权限。404 : 请求失…

VS2010断点设置技巧

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 许多Visual Studio下的程序员&#xff0c;甚至一些很有经验的开发人员&#xff0c;都不…

IOS应用开发版本控制工具之Versions使用,iosversions

Versions版本控制工具破解版&#xff08;Versions.zip&#xff09;下载请见本博文附件。下载后在MAC安装完以后&#xff0c;图标是莲花状。见下图&#xff1a; 双击运行如下图&#xff1a; 点击Repository&#xff0c;连接SVN服务器Repository&#xff08;服务器端采用的是SVN服…

如何在多web服务器共享SESSION数据

2019独角兽企业重金招聘Python工程师标准>>> 一、问题起源 稍大一些的网站&#xff0c;通常都会有好几个服务器&#xff0c;每个服务器运行着不同功能的模块&#xff0c;使用不同的二级域名&#xff0c;而一个整体性强的网站&#xff0c;用户系统是统一的&#xff0…

grpc php 返回值过大,使用grpc实现php、java、go三方互调

grpc作为经典的rpc协议&#xff0c;虽然略重&#xff0c;但是是有学习的价值的通过下面的内容可以快速上手这个grpc框架安装命令行工具php需要这个额外的protoc、grpc_php_plugin工具把这个protobuf格式的文件生成php语言里的类go需要安装protoc-gen-go工具把protobuf格式的接口…

SOCKET通信的基本步骤

SOCKET通信的基本步骤 1&#xff09;建立一个服务器ServerSocket&#xff0c;并同时定义好ServerSocket的监听端口&#xff1b;2&#xff09;ServerSocket 调用accept()方法&#xff0c;使之处于阻塞。3&#xff09;创建一个客户机Socket,并设置好服务器的IP和端口。4&#xff…