我有一个包含多个子组件的窗口(示例仅包含一个Panel)。当我隐藏这个窗口时,我希望子组件进行一些处理。是否存在子组件在隐藏父组件时可以侦听的事件?我尝试使用隐藏,停用和停用,但没有一个被解雇。
这是我正在使用的示例代码和Fiddle:
var myPanel = Ext.create('Ext.panel.Panel', {
title: 'My Panel'
});
myPanel.on('afterrender', function() {
myPanel.el.on('hide', function() {
alert('el hidden');
}, this);
}, this);
myPanel.on('hide', function() { alert('hidden'); }, this);
myPanel.on('deactivate', function() { alert('hidden'); }, this);
myPanel.on('disable', function() { alert('hidden'); }, this);
var myWindow = Ext.create('Ext.window.Window', {
height: 300,
width: 300,
items: [myPanel],
closeAction: 'hide'
});
var button = Ext.create('Ext.button.Button', {
text: 'Toggle Window',
renderTo: Ext.getBody()
});
button.on('click', function() {
if (myWindow.isVisible()) {
myWindow.hide();
}
else {
myWindow.show();
}
}, this);
当Window被隐藏时,我想进入事件监听器。我甚至开始尝试获取DOM元素,但是没有像hide这样的事件。我意识到我可以从Window控制处理,但我宁愿让每个组件监听事件并自主处理。
有什么想法吗?
答案 0 :(得分:0)
据我所知,您无法直接听取其他组件的事件,尽管您可以在控制器中进行一些处理并完成此操作。 与您提出的问题最相似的方法是在父级中侦听隐藏事件,并在子组件中触发相同的事件。 工作小提琴: https://fiddle.sencha.com/#fiddle/c74 你可以迭代所有的孩子,做你需要的。