在MXML文件之间传递数据并在点击另一个文件后打开一个

时间:2015-06-07 11:31:07

标签: actionscript-3 flash flex actionscript

我对flex很新,并试图了解整个Flex的工作原理

场景:

我开始创建一个MXML文件,其中有一个文本框和一个按钮。如果单击该按钮,将显示一个弹出窗口,其中包含文本框的值(这非常有效)。我想到的第二件事是如何在其他页面中显示相同的数据。所以,如果我点击按钮。它应该加载另一个页面并显示在文本框中写入的数据

我的代码到现在为止:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            public function open(event:MouseEvent):void{

                Alert.show("I am opening a page");
                Alert.show(txt_inp.text + " is written here");
            }
        ]]>
    </mx:Script>
    <mx:TextInput id="txt_inp" />
    <mx:Button id="openBttn" label="Click Me" click="open(event)" />
</mx:Application>

和Name.xml(第二页是)

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="setYelp()">
    <mx:Script>
        <![CDATA[
            public var helloYou:HelloYou;
            public function yelpHandler():void{
                yelp.text = "Ayush"
            }
            public function setYelp():void {
                helloYou.openBttn.addEventListener(MouseEvent.CLICK,yelpHandler);
            }
        ]]>
    </mx:Script>
    <mx:Label id="yelp" text="yelp">

    </mx:Label>
</mx:Application>

我提到了一些之前提到过的问题,例如this,并尝试过关注它,但无法理解。

另外,在我的flex builder中,我还有两个选项MXML&gt; MXML模块和MXML组件。我应该在这里使用它们,如果没有,我应该何时使用它?

2 个答案:

答案 0 :(得分:0)

为什么你要使用多个页面?通常,Flex应用程序是具有多个视图的单个应用程序,在这种情况下共享数据会更容易。

如果您想在不同页面之间传递信息,可以使用Cookie(例如参见Accessing browser cookies from Flex

另一个灵活的解决方案是http://custardbelly.com/blog/blog-posts/2010/11/15/flex-hero-persistant-data-in-mobileapplication/

我能想到的最后一件事是使用javascript桥来访问浏览器的localstorage(o sqlite)并在那里存储信息。

但是,为什么要在请求之间保存信息而不是简单地创建一个更改其视图的应用程序呢?

答案 1 :(得分:0)

第一个解决方案
使用ViewStack组件集成您的第一个mxml和第二个mxml 这就是@wezzy所说的&#34;具有多个视图的单个应用程序&#34; 如果可以集成到一个mxml,这是共享值的最简单方法。

像这样

<mx:ViewStack id="viewstack" width="100%" height="100%" selectedIndex="0" >
    <!-- Input Page is here  -->
    <mx:Canvas id="view1" width="100%" height="100%">
        <mx:TextInput id="txtName" width="150" maxChars="40" />
        <mx:Button label="Go to NextPage" click="viewstack.selectedChild=view2;"/>
    </mx:Canvas>

    <!-- Result Page -->
    <mx:Canvas id="view2" width="100%" height="100%">
        <mx:TextInput text="{txtName.text}" width="150" editable="false" />
        <mx:Button label="Back to PrevPage" click="viewstack.selectedChild=view1;"/>
    </mx:Canvas>
</mx:ViewStack>

第二个解决方案
使用SharedObject(或DB)保存和加载值。

第三种解决方案
使用单例变量来共享类之间的值 请看我的这个答案。 Flex - Problems in accessing static variable on another mxml page