Ext MVC 三层详解: // 程序入口 -- app.js Ext.onReady(function(){ Ext.QuickTips.init(); Ext.Loader.setConfig({ //开启自动加载功能 enabled:true }); Ext.application({ name:'AM', //自定义命名空间,通常都定义为AM appFolder:'app', //配置Ext框架所在的文件目录 launch:function(){ //在所有资源都载入成功后运行 Ext.create('Ext.container.Viewport',{ items:{ width:1500, height:500, xtype:'mainlayout' //这里引用了自定义的组件mainlayout(视图层的MainLayout的别称) } }); }, controllers:[ //加载所有的控制器 'UserController' ] }); }); // 控制层 UserController.js Ext.define('AM.controller.UserController',{ extend:'Ext.app.Controller', //继承Ext.app.Controller类 init:function(){ this.control({ //控制事件处理 'userlist button[id=add]':{ click:function(){ //do something } } }); }, views:[ 'UserList', //放在MainLayout之前加载 'DeptList', 'MainLayout' ], stores:[ 'UserStore', 'DeptStore' ], models:[ 'UserModel' ] }); // Model层 UserModel.js Ext.define('AM.model.UserModel',{ extend:'Ext.data.Model', //用来绑定到grid表字段 fields:[ {name:'id',type:'string'}, {name:'name',type:'auto'}, {name:'password',type:'string'}, {name:'birth',type:'auto'}, {name:'email',type:'auto'}, {name:'intro',type:'string'} ] }); // Store层:UserStore.js Ext.define('AM.store.UserStore',{ extend:'Ext.data.Store', model:'AM.model.UserModel', proxy:{ type:'ajax', url:'/ExtjsTest/test/readuser', reader:{ type:'json', root:'userinfo' }, writer:{ type:'json' } }, autoLoad:true }); // 视图层 Ext.define('AM.view.UserList',{ extend:'Ext.grid.Panel', //GridPanel组件 alias:'widget.userlist', //别名 // title:'用户信息', width:500, height:500, store:'UserStore', //绑定UserStore数据集 selModel:{ selType:'checkboxmodel' }, tbar:[{text:"添加",id:'add'},{text:'删除',id:'del'},{text:'保存',id:'save'}], //按钮事件在控制层写 columns:[{header:'编号',dataIndex:'id',field:{xtype:'textfield',allowBlank:false}}, {header:'姓名',dataIndex:'name',field:{xtype:'textfield',allowBlank:false}}, {header:'密码',dataIndex:'password',field:{xtype:'textfield',allowBlank:false}}, {header:'生日',dataIndex:'birth',field:{xtype:'datefield',allowBlank:false}}, {header:'邮件',dataIndex:'email',field:{xtype:'textfield',allowBlank:false}}, {header:'简介',dataIndex:'intro',field:{xtype:'textfield',allowBlank:false}}], ] });