摘自 : http://www.jb51.net/article/31928.htm
1 // 动态加载js模块,****重要 2 3 var application; 4 5 Ext.Loader.setConfig({ enabled: true }); 6 7 Ext.require([ 8 9 'Ext.app.Application', 10 11 'Ext.app.Controller' 12 13 ]); 14 15 16 17 Ext.app.Controller.implement({ 18 19 //MVC 加载模型 20 21 loadModel: function () { }, 22 23 //MVC 加载视图 24 25 loadView: function () { }, 26 27 getApplication: function () { 28 29 return this.application; 30 31 } 32 33 }); 34 35 36 37 Ext.app.Application.implement({ 38 39 //MVC 加载控制器 param {String/Array} controllers 40 41 loadModule: function ( controllers ) { 42 43 var me = this; 44 45 var controllers = Ext.Array.from(controllers), ln = controllers.length, i, controller; 46 47 for (i = 0; i < ln; i++) { 48 49 var name = controllers[i]; 50 51 if (!this.controllers.containsKey(name)) { 52 53 controller = Ext.create( 54 55 this.getModuleClassName(name, 'controller'), { 56 57 application: this, 58 59 id: name 60 61 }); 62 63 this.controllers.add(controller); 64 65 // 优先加载模型 66 67 controller.loadModel(); 68 69 controller.init(this); 70 71 controller.onLaunch(this); 72 73 //动态构建视图 & 绑定模型数据 74 75 controller.loadView(); 76 77 } 78 79 } 80 81 } 82 83 }); 84 85 /*****END************/
在调用时:
1 /* 2 3 写法一: 4 5 application.loadModule("Users"); 6 7 //var module = application.getController("Users"); 8 9 //var viewName = module.views[1]; 10 11 //alert(viewName); 12 13 //var view = module.getView("user.List");或者是viewName 14 15 //var panel = view.create(); 16 17 //Global.ExtTabDoLayout(panel); 18 19 写法二: 20 21 var main = new Ext.Panel({ 22 23 border: false, 24 25 layout: 'fit', 26 27 items: [{ 28 29 xtype: 'userlist' 30 31 }] 32 33 }); 34 35 Global.ExtTabDoLayout(main); 36 37 */ 38 39 application.loadModule("Org"); 40 41 42 43 var main = new Ext.Panel({ 44 45 border: false, 46 47 layout: 'border', 48 49 items: [{ xtype: 'OrgTree' }, { xtype: 'OrgUserGrid' }] 50 51 }); 52 53 //添加到tab里 54 55 Global.ExtTabDoLayout(main);