摘自 :
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} controllers40 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: name60 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");或者是viewName14 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);