我在myPackage \ overrides \ window \ Window中有以下覆盖:
Ext.define('myPackage.window.Window', {
override: 'Ext.window.Window',
listeners: {
beforeshow: function (window) {
console.log('before show');
}
}
});
然后我使用此代码:
Ext.define('myApp.view.login.Login', {
extend: 'Ext.window.Window',
xtype: 'login',
requires: [
'myApp.view.login.LoginController',
'Ext.form.Panel'
],
controller: 'login',
title: 'Login',
closable: false,
autoShow: true,
resizable: false,
listeners: {
show: function() {
console.log('in show');
}
},
items: {
... snipped for brevity; a couple of textfields and a button
...
}
});
问题是,虽然'显示'在myApp.view.login.Login'中的事件工作正常,之前显示'覆盖中的事件(' myPackage.window.Window')永远不会触发。
如果我然后从myApp.view.login.Login'中删除了听众,那么' beforeshow'在myPackage.window.Window' mypackage.window.Window'然后将触发(我可以通过console.log输出看到所有这些)。
我不明白的是,为什么?我可能错过了一些相当简单的东西。
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
您应该在初始化窗口后添加侦听器。 我还没有测试过它。但我相信它应该可以解决你的问题。
例如:
Ext.define('myApp.view.login.Login', {
extend: 'Ext.window.Window',
xtype: 'login',
requires: [
'Ext.form.Panel'
],
title: 'Login',
width: 300,
height: 300,
closable: true,
autoShow: true,
resizable: false,
initComponent: function () {
var me = this;
Ext.apply(me, {
listeners: {
show: function () {
console.log('in show');
}
},
items: [
{
xtype: 'textfield',
width: 300
}
]
});
me.callParent(arguments);
}
});