Extjs4.1.x 框架搭建 接纳Application动态按需加载MVC各模块-完美解决(二)

OK,看整个的”协会架构的”js结构如下(真的是多多益善,真的是很蛋疼):

这还没起来写作业逻辑吗,就这么蛋疼了写了这一堆的js文件,看来整个架构完毕,小叔子作者非死即伤(
⊙o⊙ )哇……………

扯远了,回归正题:早晨的时候遭受三个题材,控件的事件被撤回了,思索了下考虑是application重新创建覆盖主框架的难题,那么也正是说整个系统只好选取三个application,那么如何动态的加载controller呢?只要动态的加载了controller,别的的view、store等都会被一遍加载。 

 

当大家单击功效节点树的”组织架构”的时候,开首加载Controller的Org.js,是的只必要加载这些就能够了,其余的她会活动加载,也是MVC的帮助和益处:

诸如此类一切共青团和少先队架构的页面搭建就兑现了,而且是按需加载本模块的,各种事件不会争论。

现实的代码太多了见附属类小部件。

附件:http://files.cnblogs.com/qidian10/App.rar 

@{
    ViewBag.Title = "组织架构管理";
}

<script>
    /*    
    写法一:
    application.loadModule("Users");
    //var module = application.getController("Users");   
    //var viewName = module.views[1];
    //alert(viewName);
    //var view = module.getView("user.List");或者是viewName
    //var panel = view.create();
    //Global.ExtTabDoLayout(panel);

    写法二:
    var main = new Ext.Panel({
        border: false,
        layout: 'fit',
        items: [{
            xtype: 'userlist'
        }]
    });
    Global.ExtTabDoLayout(main);

    */

    application.loadModule("Org");
    var main = new Ext.Panel({
        border: false,
        layout: 'border',
        items: [{ xtype: 'OrgTree' }, { xtype: 'OrgUserGrid' }]
    });
   //添加到tab里
    Global.ExtTabDoLayout(main);
</script>

先是我们供给定义三个共用措施让application加载controller,借鉴:http://w26.iteye.com/blog/1531181 

图片 1

 

图片 2

上篇文章中,关于ExtJs这个人的评论和介绍就跟java和.Net那么些好同一,既然上了贼船,就难下了,而且对于公司级的接纳小编个人觉得Extjs框架依旧不错的,尤其是从未有过UI设计的团组织(苦逼的程序员就兼UI吧),起码难得发现三个做的比较好的UI框架(国产的miniUI貌似看的谢世,其他的就有点扯淡了[什么EasyUI、Dojo、JqueryUI等等]),2年前选用了Extjs2.0事后收费了,停了一段时间,前面做了比较久的Ext.Net(首假若付出功效高),以往照旧再次来到了ExtJs4,又到了起源,悲吹….干吧!

//动态加载js模块,****重要
var application;
Ext.Loader.setConfig({ enabled: true });
Ext.require([
    'Ext.app.Application',
    'Ext.app.Controller'
]);
Ext.app.Controller.implement({
    //MVC 加载模型
    loadModel: function () { },
    //MVC 加载视图
    loadView: function () { },
    getApplication: function () {
        return this.application;
    }
});
Ext.app.Application.implement({
    //MVC 加载控制器  param {String/Array} controllers
    loadModule: function (controllers) {
        var me = this;
        var controllers = Ext.Array.from(controllers), ln = controllers.length, i, controller;
        for (i = 0; i < ln; i++) {
            var name = controllers[i];
            if (!this.controllers.containsKey(name)) {
                controller = Ext.create(
                        this.getModuleClassName(name, 'controller'), {
                            application: this,
                            id: name
                        });
                this.controllers.add(controller);
                // 优先加载模型
                controller.loadModel();
                controller.init(this);
                controller.onLaunch(this);
                //动态构建视图 & 绑定模型数据
                controller.loadView();
            }
        }
    }
});
/*****END************/

下午的的时候发了第③篇 Extjs4.1.x 框架搭建
选拔Application动态按需加载MVC各模块
 ,发现达成上可能有毛病,有好多清楚不成就的地方,早上详细化解下了,终于达成MVC各模块按需加载了,哈皮。