2011-11-02 119 views
0
的AIR調度事件

我有一個包含搜索字段的表單。 當用戶按Enter鍵時,我使用httpservice向mySQL數據庫發送查詢。 在某些情況下(很多)有幾條記錄,所以打開一個新窗口以顯示帶有數據網格的記錄,以便用戶選擇好的結果。帶有參數

我的問題是如何將選定的信息發送到第一個窗口(文本字段)。 我是派遣事件的方式,但我沒有找到如何使用!

你能幫我找到解決辦法嗎?

感謝

+0

你是如何創建新窗口的?它是一個新的NativeWindow嗎?或者你是否一般使用該術語來指代應用程序中的另一個屏幕? – JeffryHouser

+1

不知道我是否正確理解了你,但這裏有:子類事件,因此它可以包含數據字段並在「其他」窗口中分派 – Henrik

+0

第一個窗口是自定義窗口擴展窗口(使用myCustomWindo.open(true)創建) 。對於第二個窗口,我彈出彈出PopUpManager.createPopUp(this,TextAreaWindow);其他選項是創建一個窗口作爲第一個謝謝 – Flex60460

回答

0

如果你想在MDI環境,我建議你使用某種共享模型(又稱調解員或演示模型)內進行通信,保持所需的窗口之間的合同。

class SelectionPM{ 
    [Bindable] 
    public var selectedItem:Object; 
} 

使用案例:

窗口1具有SelectionPM的實例,當你打開窗口2傳遞 SelectionPM實例它,然後在窗口2切換選擇更新SelectionPM.selectedItem 財產數據網格。這將 將綁定鏈傳播到Window1,您可以根據需要使用 SelectionPM.selectedItem。

理想情況下,您可以使用IoC容器進行模型注入,但這是另一回事。

這可能看起來很多工作,但如果您在應用程序中保留此方法,您將從中受益。

乾杯!

+0

謝謝你的回答,但它似乎很難像我這樣的新手;-) – Flex60460

0

下面是一組四個類作爲基礎。顯然你不想在構造函數中做如下的實際工作。

public class App 
{ 
    public static var eventDispatcher:EventDispatcher = new EventDispatcher(); 
    public function App() 
    { 
     new Window1(); 
    } 
} 

class AppEvent extends Event 
{ 
    public static const DATA_READY:String = "APPEVENT.DATA_READY"; 
    public var data:Object; 
    public function AppEvent(type:String, data:Object) 
    { 
     super(type); 
     this.data = data; 
    } 
} 

class Window1 
{ 
    public function Window1() 
    { 
     App.eventDispatcher.addEventListener(AppEvent.DATA_READY, onDataReady); 
     ...DO STUFF... 
     new Window2(); 
    } 
    private function onDataReady(evt:AppEvent) : void 
    { 
     ...DO STUFF WITH "evt.data".... 
    } 
} 

class Window2 
{ 
    public function Window2() 
    { 
     ...GET DATA FROM SERVER AND PUT IT IN "data"... 
     App.eventDispatcher.dispatchEvent(new AppEvent(AppEvent.DATA_READY, data)); 
    } 
} 
</pre>