onLaunch函数未在ExtJS控制器中调用

时间:2012-03-30 09:54:49

标签: javascript extjs

我是ExtJS的新手,我花了几个小时试图解决这个问题,但事实并非如此。我有一个带有'onLaunch'功能的控制器,但它永远不会被调用。

我在应用程序的“启动”功能中包含了我的控制器的.js文件。这就是我将控制器的'init'功能更改为'onLaunch'的原因,我读到'init'在应用程序'launch'和'onLaunch'之前被调用。

我用'console.log'检查我的.js文件被读取了,所以我不明白为什么'onLaunch'功能不是......

这里的控制器文件,代码非常简单,这是我的第一个应用程序,我想在开始之前尝试一些事情:

console.log('BROWSER CONTROL');

Ext.define('WSR.controller.BrowserControl', {

    extend: 'Ext.app.Controller',

    views: [
        'Browser'
    ],

    onLaunch: function() {
        console.log('ONLAUNCH BrowserControl');

        this.control({
            'viewport > panel': {
                render: this.onPanelRendered
            },
            'browser': {
                selectionchange: this.onSelectionChanged
            }
        });
    },

    onPanelRendered: function() {
        console.log('PanelRendered');
    },

    onSelectionChanged: function() {
        console.log('SelectionChanged');
    }
});

在Firebug控制台中,我可以看到“BROWER CONTROL”消息,但从未看到“ONLAUNCH”消息。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您的代码只定义了类(这是Ext.Define方法的用途),但不实例化它。您需要在已定义的类上调用Ext.create来实际创建实例。我怀疑你的onLaunch函数会被调用。 (有关详细信息,请参阅我链接的ExtJS文档。)