【问题标题】:Handler for custom event not firing: "Cannot call method "apply" of undefined error instead未触发自定义事件的处理程序:“无法调用方法”应用“未定义的错误
【发布时间】:2013-01-14 04:50:33
【问题描述】:

对于我的应用程序中的每个视图,我都在尝试创建一个 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'

【问题讨论】:

    标签: extjs sencha-touch-2


    【解决方案1】:

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

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

    【讨论】:

    • 我还以为是这样,而且很可能是这样。但我尝试了你的建议,它仍然给我同样的错误。我不认为这是一个错字,b/c 我第二次和第三次 c&p'd 所有的名字来排除这种情况。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 2015-02-14
      相关资源
      最近更新 更多