【问题标题】:onLaunch function not called in an ExtJS controller在 ExtJS 控制器中未调用 onLaunch 函数
【发布时间】:2012-04-14 00:08:25
【问题描述】:

我真的是 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”消息。

有人可以帮我吗?

【问题讨论】:

    标签: javascript extjs


    【解决方案1】:

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

    【讨论】:

    • 看来你是对的,但我找不到合适的地方来实例化控制器。最后,我使用了应用程序的“控制器”属性,它加载 .js 文件并实例化该类。我的项目经理不想要这种方法,但它似乎更容易。谢谢你的回答。
    • Sencha 通常还建议您将控制函数调用放在 init 函数中。
    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多