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)
失败的地方。
尝试在事件侦听器中调用事件时是否存在某种范围/嵌套问题?
我的目标是在按钮的菜单项选择上触发该事件。
答案 0 :(得分:0)
显然这是由于未定义的处理程序。
使用
设置处理程序在超类init之前的initComponent中this.on()
。