0

我有一个由 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);

    }

});
4

2 回答 2

2

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

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

例子:

Ext.application({
    name: 'MyApp',
    launch: function() {
        Ext.create('Ext.container.Viewport', {
            items: {
                html: 'My App'
            }
        });
    }
});
于 2012-05-02T15:45:22.553 回答
2

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

虽然 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() {

    }

});
于 2012-05-09T18:50:05.760 回答