Extjs4.1MVC详解

更多信息请移步:http://xiebaochun.github.io/

app.js

[javascript] view
plain
copyprint?

  1. Ext.onReady(function(){  
  2.    Ext.QuickTips.init();  
  3.    Ext.Loader.setConfig({  //开启自动加载功能  
  4.        enabled:true  
  5.    });  
  6.    Ext.application({    
  7.       name:'AM',      //自定义命名空间,通常都定义为AM  
  8.       appFolder:'app',  //配置Ext框架所在的文件目录  
  9.       launch:function(){   //在所有资源都载入成功后运行  
  10.           Ext.create('Ext.container.Viewport',{    
  11.               items:{  
  12.                   width:1500,  
  13.                   height:500,  
  14.                   xtype:'mainlayout' //这里引用了自定义的组件mainlayout(视图层的MainLayout的别称)  
  15.               }  
  16.           });  
  17.       },  
  18.       controllers:[  //加载所有的控制器  
  19.           'UserController'  
  20.       ]  
  21.    });  
  22. });  

控制层:

UserController.js

[javascript] view
plain
copyprint?

  1. Ext.define('AM.controller.UserController',{  
  2.     extend:'Ext.app.Controller',//继承Ext.app.Controller类  
  3.     init:function(){  
  4.         this.control({   //控制事件处理  
  5.             'userlist button[id=add]':{    
  6.                 click:function(){  
  7.                       //do something  
  8.                 }  
  9.             }               
  10.         });  
  11.     },  
  12.     views:[  
  13.          'UserList',   //放在MainLayout之前加载  
  14.          'DeptList',  
  15.          'MainLayout'       
  16.     ],  
  17.     stores:[  
  18.          'UserStore',  
  19.          'DeptStore'  
  20.     ],  
  21.     models:[  
  22.          'UserModel'  
  23.     ]  
  24. });  

Model层:

UserModel.js

[javascript] view
plain
copyprint?

  1. Ext.define('AM.model.UserModel',{  
  2.      extend:'Ext.data.Model',  //用来绑定到grid表字段  
  3.      fields:[  
  4.          {name:'id',type:'string'},  
  5.          {name:'name',type:'auto'},    
  6.      {name:'password',type:'string'},  
  7.      {name:'birth',type:'auto'},  
  8.          {name:'email',type:'auto'},  
  9.          {name:'intro',type:'string'}  
  10.     ]  
  11. });  

Store层:

UserStore.js

[javascript] view
plain
copyprint?

  1. Ext.define('AM.store.UserStore',{  
  2.     extend:'Ext.data.Store',  
  3.     model:'AM.model.UserModel',  
  4.     proxy:{  
  5.        type:'ajax',  
  6.        url:'/ExtjsTest/test/readuser',  
  7.        reader:{  
  8.             type:'json',  
  9.             root:'userinfo'  
  10.        },  
  11.        writer:{  
  12.            type:'json'  
  13.        }  
  14.     },  
  15.     autoLoad:true  
  16. });  

DeptStore.js

[javascript] view
plain
copyprint?

  1. Ext.define('AM.store.DeptStore',{  
  2.     extend:'Ext.data.TreeStore',  
  3.     defautRootId:'root',    
  4.     proxy:{  
  5.        type:'ajax',  
  6.        url:'/ExtjsTest/test/showuser',  
  7.        reader:{  
  8.             type:'json'  
  9.        },  
  10.        writer:{  
  11.            type:'json'  
  12.        }  
  13.     },  
  14.     autoLoad:true  
  15. });  

视图层:

UserList.js

[javascript] view
plain
copyprint?

  1. Ext.define('AM.view.UserList',{  
  2.         extend:'Ext.grid.Panel', //GridPanel组件  
  3.         alias:'widget.userlist', //别名  
  4.     //  title:'用户信息',  
  5.         width:500,  
  6.         height:500,  
  7.         store:'UserStore',  //绑定UserStore数据集  
  8.         selModel:{  
  9.            selType:'checkboxmodel'  
  10.         },  
  11.         tbar:[{text:"添加",id:'add'},{text:'删除',id:'del'},{text:'保存',id:'save'}],  //按钮事件在控制层写  
  12.         columns:[{header:'编号',dataIndex:'id',field:{xtype:'textfield',allowBlank:false}},    
  13.              {header:'姓名',dataIndex:'name',field:{xtype:'textfield',allowBlank:false}},  
  14.              {header:'密码',dataIndex:'password',field:{xtype:'textfield',allowBlank:false}},  
  15.              {header:'生日',dataIndex:'birth',field:{xtype:'datefield',allowBlank:false}},  
  16.              {header:'邮件',dataIndex:'email',field:{xtype:'textfield',allowBlank:false}},  
  17.              {header:'简介',dataIndex:'intro',field:{xtype:'textfield',allowBlank:false}}],  
  18.        ]  
  19. });  

DeptList.js

[javascript] view
plain
copyprint?

  1. Ext.define('AM.view.DeptList',{  
  2.     extend:'Ext.tree.Panel',  //TreePanel组件  
  3.     alias:'widget.deptlist',  
  4.     //  title:'树',  
  5.     width:300,  
  6.     height:500,  
  7.         rootVisible:false,   
  8.         dockedItems:[{  
  9.            xtype:'toolbar',  
  10.            dock:'left',  
  11.            items:[  
  12.              {xtype:'button',text:'add',id:'add'},     
  13.              {xtype:'button',text:'delete',id:'del'},  
  14.              {xtype:'button',text:'copy',id:'copy'}  
  15.         ]  
  16.       },  
  17.       store:'DeptStore',  //绑定DeptStore数据集  
  18.     }  
  19. });  

效果图:

时间: 2024-08-02 12:58:26

Extjs4.1MVC详解的相关文章

详解PHP实现异步调用的4种方法_php技巧

浏览器和服务器之间是通过 HTTP 协议进行连接通讯的.这是一种基于请求和响应模型的协议.浏览器通过 URL 向服务器发起请求,Web 服务器接收到请求,执行一段程序,然后做出响应,发送相应的html代码给客户端. 这就有了一个问题,Web 服务器执行一段程序,可能几毫秒就完成,也可能几分钟都完不成.如果程序执行缓慢,用户可能没有耐心等下去,就关闭浏览器了. 而有的时候,我们更本不关心这些耗时的脚本的返回结果,但却还要等他执行完返回,才能继续下一步. 那么有没有什么办法,只是简单的触发调用这些耗

详解Python中的type()方法的使用

  这篇文章主要介绍了详解Python中的type()方法的使用,是Python入门中的基础知识,需要的朋友可以参考下 type()方法返回传递变量的类型.如果传递变量是字典那么它将返回一个字典类型. 语法 以下是type()方法的语法: ? 1 type(dict) 参数 dict -- 这是字典 返回值 此方法返回传递变量的类型. 例子 下面的例子显示type()方法的使用 ? 1 2 3 4 #!/usr/bin/python   dict = {'Name': 'Zara', 'Age'

【转】java枚举使用详解

在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的"数据集",春夏秋冬四个数据元素组成了四季的"数据集". 在Java中如何更好的使用这些"数据集"呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法. Java代码   package com.ljq.test;      /**   * 枚举用法详解   *

状态模式(state pattern) 详解

状态模式(state pattern): 允许对象在内部状态改变时改变它的行为, 对象看起来好像修改了它的类. 建立Context类, 包含多个具体状态(concrete state)类的组合, 根据状态的不同调用具体的方法, state.handle(), 包含set\get方法改变状态. 状态接口(state interface), 包含抽象方法handle(), 具体状态类(concrete state)继承(implement)状态类(state), 实现handle()方法; 具体方法

kafka详解一、Kafka简介

背景:      当今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它        如何及时做到如上两点      以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要一个沟通两者的桥梁-消息系统.      从一个微观层面来说,这种需求也可理解为不同的系统之间如何传递消息. Kafka诞生

Cocos2d-x win7 + vs2010 配置图文详解

Cocos2d-x win7 + vs2010 配置图文详解(亲测)   下载最新版的cocos2d-x.打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为cocos2d-1.01-x-0.9.1,具体下载位置如下图: 下载完之后,解压到当前文件夹.我把下载的程序放在F盘根目录,解压完毕之后,双击打开文件夹,看看里面有什么东西,红圈部分就是我们要安装使用的文件: 接下来,我们正式安装cocos2d-x到win7中去. 首先,双击上图中的cocos2d-w

ip-《TCP/IP 详解卷一》中90页中讲到,“由于子网号不相同,代理ARP不能使用”,这怎么理解?

问题描述 <TCP/IP 详解卷一>中90页中讲到,"由于子网号不相同,代理ARP不能使用",这怎么理解? <TCP/IP 详解卷一>中90页中讲到,"由于子网号不相同,代理ARP不能使用",这怎么理解? 解决方案 ARP主要用在一个子网中,用MAC地址来通信.数据链路层 不同子网,需要通过三层路由 解决方案二: 比如 N1 <-> GW <-> N2,N1和N2是同一个子网,GW上开启arp代理的效果是,N1和N2上

JS表格组件神器bootstrap table详解(基础版)_javascript技巧

一.Bootstrap Table的引入 关于Bootstrap Table的引入,一般来说还是两种方法: 1.直接下载源码,添加到项目里面来. 由于Bootstrap Table是Bootstrap的一个组件,所以它是依赖Bootstrap的,我们首先需要添加Bootstrap的引用. 2.使用我们神奇的Nuget 打开Nuget,搜索这两个包 Bootstrap已经是最新的3.3.5了,我们直接安装即可. 而Bootstrap Table的版本竟然是0.4,这也太坑爹了.所以博主建议Boot

网页文字该多大?文字字号详解

网页|详解 文字在网页上的应用: (只看小标题您就能知道这一部分要说什么了,为了避免罗嗦,在此文发布前决定把此处300余字删除,只保留了下面这一句.) 对于一个设计的好的网站来说,用户浏览时间最长的是文章正文. 中文网页文字的现状: 中文网页普遍使用12px和14px的宋体(simsun),这两种文字都可以加粗(font-weight: bold).这个规范似乎也成了网页设计师的基本 常识. 中国的网页设计师有这4种可供选择的文字表现方式,仅仅是4种,只有这4种,4种很小的文字.其中12px的宋