2011-11-02 90 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>