Extjs4.1.x 框架搭建 采用 Application 动态按需加载 MVC 各模块完美实现

摘自 : 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); 
原文地址:https://www.cnblogs.com/livon/p/3398751.html