菜单内的 fireEvent 侦听器错误


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 是函数的参数。一切都在那里。控制台.log工作 - 因此在此之前的代码也可以工作。这似乎确实在正确的范围内。

然而,火灾事件最终以:

捕获的类型错误:无法读取未定义的属性"apply"

在错误日志中的调用之后,fireEvent 确实被执行,它到达

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

是它失败的地方。

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

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

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

处理程序是使用

this.on()

在超类初始化之前 initComponent。

最新更新