菜单中的fireEvent监听器错误

时间:2014-12-12 10:01:59

标签: extjs javascript-events scope extjs3

return new Ext.Button({
  text: cfg.text,
  menu: {
    xtype: 'menu',
    items: cfg.menu,
    listeners: {
      itemclick: {
        fn: function() {
          console.log(this);
          this.fireEvent('tabchange', 'apps');
        },
        scope: this
      },
      scope: this
    },
    scope: this
  },
  minWidth: 50,
  scope: this
});

cfg作为函数的参数。一切都在那里。 Console.log工作 - 因此代码直到该点工作。 这似乎确实在适当的范围内。

然而fireEvent最终得到:

Uncaught TypeError: Cannot read property 'apply' of undefined

在错误日志中调用之后,fireEvent会执行,它会到达

EXTUTIL.Event.fire
 if(l && l.fireFn.apply(l.scope || me.obj || window, args) === FALSE)

失败的地方。

尝试在事件侦听器中调用事件时是否存在某种范围/嵌套问题?

我的目标是在按钮的菜单项选择上触发该事件。

1 个答案:

答案 0 :(得分:0)

显然这是由于未定义的处理程序。

使用

设置处理程序
  

this.on()

在超类init之前的initComponent中