自定义事件未触发的处理程序:“无法调用方法”应用“未定义的错误

时间:2013-01-14 04:50:33

标签: extjs sencha-touch-2

对于我的应用中的每个视图,我正在尝试为创建视图时创建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
        }

我也尝试将我的参考设置为简单的东西:

rankings: 'fhrankingspanel'

2 个答案:

答案 0 :(得分:1)

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

在你的情况下,你应该首先尝试写这个.onRankingsActivate而不是'onRankingsActivate'

答案 1 :(得分:0)

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

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

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

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