0

Sencha Architect 2によって作成された小さなアプリケーションがあります。コントローラーとアプリケーションオブジェクトの両方の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

ここで使用する正しい方法は起動です。

アプリケーションは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 に答える