初始化和解构控制器的最佳实践

时间:2013-05-09 22:24:13

标签: extjs sencha-touch-2

构建应用程序时,设置控制器的最佳方法是什么?

我理解路由,事件监听器和大多数交互都应该由控制器管理,但我的主控制器开始失去控制,我不知道如何最好地将我的逻辑分离到单独的控制器而不保持他们都一直“奔跑”......

2 个答案:

答案 0 :(得分:2)

在应用启动时将它们全部加载即可,即使使用数百数千个控制器也是如此。这是需要时间的视图渲染。

使用sencha cmd确保您的应用最小化并连接在一起。

在测试中,我创建了1000个简单的控制器,如下所示:

Ext.define('app.controller.ControllerN', {
    extend: 'Ext.app.Controller',
    init: function(application) {    
        this.control({
            buttonN1: {
                click: function() {
                }
            },
            buttonN2: {
                click:function(){}
            }, 
            ... 20 listeners
        });
    }
});

我将它们连接成一个文件,并将它们加载到app.js中,如下所示:

Ext.application({
    name:'app',
    controllers:[
      'Controller0',
      'Controller1'
       ... 1000 controllers
    ],
    launch:function(){}
}

从浏览器刷新(Chrome)花了一秒钟,直到调用最后一个控制器的init方法。

答案 1 :(得分:1)

我有类似的问题所以我根据它将支持的业务功能划分控制器,例如userController执行所有与用户相关的操作,如登录,注销,更新等,而cartController执行与购物车相关的所有操作,如添加到购物车,应用优惠券,付款等。由于单个视图可以具有与应用程序的不同区域相关的许多功能您可以在多个控制器中为此视图添加引用,并仅侦听相应控制器中的相关事件。