我对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>
And Name.xml(The Second page is)
<?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>
我参考了以前问过的一些类似的问题,并试图遵循它,但还是不能真正理解。
此外,在我的flex构建器中,我有两个MXML> MXML模块和MXML组件的选项。我应该在这里使用它们吗?如果不是,我应该在什么时候使用?
为什么要使用多个页面?通常,Flex应用程序是带有多个视图的单个应用程序,在这种情况下共享数据要容易得多。
如果你想在不同的页面之间传递信息,你可以使用cookie(参见例如从Flex访问浏览器cookie)
另一个flex解决方案是http://custardbelly.com/blog/blog-posts/2010/11/15/flex-hero-persistant-data-in-mobileapplication/
我能想到的最后一件事是使用javascript桥访问浏览器的localstorage (o sqlite)并在那里存储信息。
但是,为什么要在请求之间保存信息,而不是简单地创建一个更改其视图的应用程序呢?
1解决方案
使用ViewStack组件集成你的第一个mxml和第二个mxml。
这就是@wezzy所说的"单应用+多视图"。
这是共享值的最简单的方法,如果您可以集成到一个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>
2解决方案
使用SharedObject(或DB)保存和加载值
第三方案
使用单例变量在类之间共享值。
请看我的回答。Flex -访问另一个mxml页面上的静态变量的问题