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

onLaunch function not called in an ExtJS controller

本文关键字:调用 onLaunch 函数 ExtJS 控制器      更新时间:2023-09-26

我真的是ExtJS的新手,我只是花了几个小时试图解决这个问题,但没能解决。我有一个带有"onLaunch"功能的控制器,但它从未被调用。

我在应用程序"启动"函数中包含了控制器的.js文件。这就是为什么我把控制器的"init"函数改为"onLaunch",我读到"init"在应用程序"启动"之前调用,"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"消息。

有人能帮我吗?

您的代码只定义了类(Ext.Define方法就是这样做的),但没有实例化它。您需要对定义的类调用Ext.create才能真正创建实例。我怀疑您的onLaunch函数届时会被调用。(有关更多信息,请参阅我链接的ExtJS文档。)