Ext JS:Window子组件隐藏事件

时间:2014-10-22 23:33:58

标签: extjs extjs4 window

我有一个包含多个子组件的窗口(示例仅包含一个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控制处理,但我宁愿让每个组件监听事件并自主处理。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

据我所知,您无法直接听取其他组件的事件,尽管您可以在控制器中进行一些处理并完成此操作。 与您提出的问题最相似的方法是在父级中侦听隐藏事件,并在子组件中触发相同的事件。 工作小提琴: https://fiddle.sencha.com/#fiddle/c74 你可以迭代所有的孩子,做你需要的。