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最终以:
未捕获的TypeError:无法读取未定义的属性'apply'
跟随错误日志中的调用,fireEvent确实被执行,到达
EXTUTIL.Event.fire
if(l && l.fireFn.apply(l.scope || me.obj || window, args) === FALSE)
它在哪里失败。
尝试在事件侦听器内调用事件时,是否存在某种范围界定/嵌套问题?
我的目标是在按钮的菜单项选择上触发该事件。
显然是由于未定义的处理程序。
处理程序是使用]设置的
this.on()
在超类初始化之前的initComponent中。