0

对于我的应用程序中的每个视图,我都在尝试为创建和销毁视图时创建一个fhActivatefhDeactivate事件,以便我可以执行不同的必要功能。在我的主控制器中,创建视图后,我执行以下操作:

view.fireEvent('fhActivate');

在另一个控制器中,我试图监听这样的事件:

config: {

    refs: {
       rankings: {
             selector: 'fhrankingspanel',
             xtype: 'fhrankingspanel',
             autoCreate: true
        }
    },

    control: {
        rankings : {
            fhActivate: 'onRankingsActivate'
        }
    },


    onRankingsActivate: function() {
        console.log('activate');
    }
}

视图加载正常,xtype 在该类中定义如下:

alias: 'widget.fhrankingspanel'

但我得到这个错误:

Uncaught TypeError: Cannot call method 'apply' of undefined 

我错过了什么?

更新

我还要注意,我已经在控制配置对象中尝试过这个:

rankings : {
            fhActivate: this.onRankingsActivate
        }

我还尝试将我的 ref 设置为简单的东西:

rankings: 'fhrankingspanel'
4

2 回答 2

1

当回调方法未定义时会发生此错误。在您注册活动时,您可能会遇到拼写错误或范围问题。

在您的情况下,您应该首先尝试编写 this.onRankingsActivate 而不是 'onRankingsActivate'

于 2013-01-14T05:58:08.100 回答
0

如果您不将方法包装在配置对象中,它也会有所帮助。在这里参考文档时,我注意到了我的愚蠢错误:

http://docs.sencha.com/touch/2-0/#!/api/Ext.app.Controller

一旦我改变了它,并使我的控​​制方法看起来像这样,它就起作用了:

control: {
        rankings : {
            fhActivate: 'onRankingsActivate'
        }
    }
于 2013-01-14T10:56:47.720 回答