Sencha Architect 2:onLaunch从未打过电话

时间:2012-05-02 14:17:26

标签: extjs4 sencha-architect

我有一个由Sencha Architect 2创建的小应用程序。我已经多次注意到我可以很好地覆盖Controller和Application对象的onLaunch,从不调用该函数。我正在使用试用版2.0.0,构建412.这是应用程序代码:

Ext.Loader.setConfig({
    enabled: true
});

Ext.application({
    views: [
        'MyContainer',
        'MyGridPanel'
    ],
    autoCreateViewport: true,
    name: 'MyApp',

    onLaunch: function() {
        var container = Ext.getCmp ('glbContainer');

        var cfg = [
        { dataIndex: 'ID', text: 'ID' },
        { dataIndex: 'DISPLAYNAME', text: 'Displayname' }
        ];

        var theGridPanel = this.getComponent ('theGridPanel');

        var config = [];


        for (var jj=0; jj<cfg.length; jj++) {
            var configElem = {};
            configElem.xtype = 'gridcolumn';
            configElem.dataIndex = cfg [jj].dataIndex;
            configElem.text = cfg [jj].text;
            configElem.width = 200;
            config.push (configElem);
        }

        alert (config.length);

        theGridPanel.reconfigure (config);

    }

});

2 个答案:

答案 0 :(得分:2)

我认为我们没有onLaunch方法来覆盖。它应该是launch。看一下文档。 Application或Controller类没有onLaunch属性。引用文档:

  

启动方法:在控制器的应用程序之后立即调用   已调用应用程序自己的启动功能。这通常是一个   运行任何必须在应用UI之后运行的逻辑的好地方   初始化。另请参见init,它在应用程序之前调用   发射功能。

示例:

Ext.application({
    name: 'MyApp',
    launch: function() {
        Ext.create('Ext.container.Viewport', {
            items: {
                html: 'My App'
            }
        });
    }
});

答案 1 :(得分:2)

启动是在这里使用的正确方法。

虽然Application是一个Ext.app.Controller,但它并不总是与控制器完全相同。另请注意,此处不使用Ext.define来定义应用程序,您不应该这样做。但是,您正在调用方法Ext.application({config});

设置应用程序启动方法的正确方法

Ext.application({
    name: 'MyApp',
    controllers: [
        'MyController'
    ],

    launch: function() {

    }

});

设置控制器启动方法的正确方法

Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',

    onLaunch: function() {

    }

});