Sencha Architect 2: onLaunch никогда не вызывался

У меня есть небольшое приложение, созданное Sencha Architect 2. Я уже несколько раз замечал, что могу очень хорошо переопределить onLaunch объекта Controller и Application, функция никогда не вызывается. Я использую пробную версию 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);

    }

});

person kaidentity    schedule 02.05.2012    source источник


Ответы (2)


Я не думаю, что у нас есть метод onLaunch для переопределения. Должно быть launch. Посмотрите документацию. Нет свойства onLaunch для класса Application или Controller. Цитата из документов:

метод запуска: вызывается приложением контроллера сразу после вызова собственной функции запуска приложения. Обычно это хорошее место для запуска любой логики, которая должна выполняться после инициализации пользовательского интерфейса приложения. См. также init, который вызывается перед функцией запуска приложения.

Пример:

Ext.application({
    name: 'MyApp',
    launch: function() {
        Ext.create('Ext.container.Viewport', {
            items: {
                html: 'My App'
            }
        });
    }
});
person Abdel Raoof Olakara    schedule 02.05.2012
comment
Привет, я полностью готов последовать вашему совету и обязательно попробую запустить, но есть onLaunch как для приложения, так и для контроллера: docs.sencha.com/ext-js/4-1/#!/api/Ext.app.Application. В документации сказано: это шаблонный метод. крючок в функциональности этого класса. Не стесняйтесь переопределять его в дочерних классах. - person kaidentity; 02.05.2012
comment
Ах!! Моя абсолютная ошибка! Теперь я понимаю, что вы пытаетесь сделать! - person Abdel Raoof Olakara; 02.05.2012

Запуск — правильный метод для использования здесь.

Хотя приложение является 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() {

    }

});
person Phil Strong    schedule 09.05.2012