2010-04-06 28 views
2

我有兩個窗口。在一個窗口中調用的事件,但處理程序(偵聽器)必須位於另一個窗口中。這可以做到嗎?如果是,如何?活動在ExtJs

回答

7

窗口是如何被創建的,是第二個窗口,它觸發了第一個窗口創建的子窗口(一個與偵聽器)?

你想發起自定義事件還是使用extjs事件?

您可以用不同的方式添加自定義事件 前

var win = new xxxWindow(); 
win.addEvents('myevent'); 

或創建後

Ext.extend(xxxWindow, Ext.Window, { 
    initComponent: function(){ 
     xxxWindow.superclass.initComponent.apply(this, arguments); 
     this.addEvents('myevent'); 
    } 
}); 
在第一個窗口(一個監聽器和第二窗口的父)

然後第二個窗口

showSecondWindow: function(){ 
    var win = new xxxWindow(); 
    win.on('myevent', this.myEventHandler, this); 
}, 

myEventHandler: function(arg1, arg2){ 
} 

要觸發自定義事件第二個窗口

fireMyEvent: function(arg1, arg2){ 
    this.fireEvent('myevent', arg1, arg2); 
} 

希望這可以解決您的問題。

+1

事件是組件間通信的好方法。好答案。 – 2010-04-06 13:53:05

+0

謝謝。我在ExtJS-3文檔中找不到任何事件示例。 – Keyo 2011-06-28 22:34:51