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。