Apache flex 如何在子窗口中使用主窗口中的数据?

Apache flex 如何在子窗口中使用主窗口中的数据?,apache-flex,air,Apache Flex,Air,我刚刚开始使用Flex开发一个照片查看器类型的桌面AIR应用程序。我可以从主窗口启动子窗口,但在这些子窗口中,我似乎无法访问在主窗口中收集的数据 如何访问此数据? 或者,如何在创建时将此数据发送到子窗口?它不需要动态链接 myMain.mxml <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"

我刚刚开始使用Flex开发一个照片查看器类型的桌面AIR应用程序。我可以从主窗口启动子窗口,但在这些子窗口中,我似乎无法访问在主窗口中收集的数据

如何访问此数据?
或者,如何在创建时将此数据发送到子窗口?它不需要动态链接

myMain.mxml

    <?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
                       xmlns:s="library://ns.adobe.com/flex/spark"
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       width="260" height="200"
                       title="myMain">
    <fx:Declarations>
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            public function openWin():void {
                new myWindow().open();
            }

            public var myData:Array = new Array('The Eiffel Tower','Paris','John Doe');
        ]]>
    </fx:Script>
    <s:Button x="10" y="10" width="240" label="open a sub-window" click="openWin();"/>
</s:WindowedApplication>

myWindow.mxml

    <?xml version="1.0" encoding="utf-8"?>
<mx:Window name="myWindow"
           title="myWindow"
           xmlns:mx="http://www.adobe.com/2006/mxml"
           layout="absolute"
           width="640" height="360">
    <mx:Script>
        <![CDATA[

        ]]>
    </mx:Script>
    <mx:Label id="comment" x="10" y="10" text=""/>
    <mx:Label id="location" x="10" y="30" text=""/>
    <mx:Label id="author" x="10" y="50" text=""/>
</mx:Window>


我意识到这可能是一个非常简单的问题,但我已经在网上搜索、阅读和观看了几天关于随机广播主题的教程,但都找不到。看起来像傻瓜的风险现在是值得的,我想继续我的第一个应用程序

您可以向窗口类添加属性,并从应用程序传递数据

使用属性和setter函数:

myWindow.mxml:

    <![CDATA[
        private var _data : Array;

        public function set data(data : Array) : void {
             this._data = data;
        }

    ]]>

主要


您也可以通过向窗口添加构造函数参数来实现,但您必须在ActionScript中编写窗口组件

(另外:您可能希望使用MyWindow作为组件的名称,而不是MyWindow,但这只是常规的吹毛求疵)

另外,请注意,还有一个单例变量Application.Application,可供应用程序中的所有类访问;但是,我不知道这是否适用于WindowedApplication,无论哪种方式,这都不是推荐的方法

    <![CDATA[
        public function openWin():void {
            var w : myWindow = new myWindow();
            w.data = myData;
            w.open();
        }

        public var myData:Array = new Array('The Eiffel Tower',
                                            'Paris','John Doe');
    ]]>