我正在使用Flash Builder 4 Burrito Preview - 构建移动应用程序。我有一个名为footer.mxml的自定义组件。该页脚有4个按钮,其中一个有一个绑定到cartValue的标签。我试图在所有视图和页脚组件中维护一个名为cartValue的全局变量。
footer.mxml
<s:Group 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="100%" height="64" chromeColor="#000000" fontSize="10">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<mx:CurrencyFormatter id="currencyFormatter"
currencySymbol="$"
useThousandsSeparator="true"
precision="2" />
</fx:Declarations>
<fx:Script>
<![CDATA[
[Bindable]
public var cartValue:int;
]]>
</fx:Script>
<s:HGroup width="100%" contentBackgroundColor="#000000" paddingBottom="0" paddingLeft="0"
paddingRight="0" paddingTop="0">
<s:Button x="0" y="624.5" width="25%" height="64" label="Account" chromeColor="#2259AA"
enabled="true" fontSize="10" fontWeight="bold" icon="@Embed('assets/user.png')"/>
<s:Button x="121" y="624.5" width="25%" height="64" label="Orders" chromeColor="#2259AA"
fontSize="10" icon="@Embed('assets/doc_lines_stright.png')"/>
<s:Button x="241" y="624.5" width="25%" height="64" label="Help" chromeColor="#2259AA"
fontSize="10" icon="@Embed('assets/spechbubble.png')"/>
<s:Button x="360" y="624.5" width="25%" height="64" label="{currencyFormatter.format(cartValue)}" chromeColor="#2259AA"
fontSize="10" icon="@Embed('assets/shop_cart.png')"/>
</s:HGroup>
</s:Group>
RincoTest.mxml
<s:MobileApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundColor="#000000" firstView="views.RincoTestHome"
>
<fx:Style source="RincoTest.css"/>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
[Bindable]
public var cartValue:int;
]]>
</fx:Script>
<s:titleContent>
<s:Image left="1" top="3" width="173" height="75" backgroundAlpha="1.0" smooth="true"
source="assets/iphone_large.png"/>
</s:titleContent>
<s:navigationContent>
<mx:Spacer width="10" height="82"/>
</s:navigationContent>
</s:MobileApplication>
这就是我实施它的方式
<components:footer x="1.65" y="614.95" width="100%" height="64" cartValue="{cartValue}"/>
我试图绑定Application.application.cartValue和 MobileApplication.application.cartValue。他们都没有工作。
如果有更好的方法在整个应用程序中维护cartValue,请告诉我。这是我第一次使用Flex。
谢谢, 欧尼
答案 0 :(得分:1)
在组件中使用静态变量。
将其引用为ComponentName.staticVar
。通常,需要了解全局的所有内容都已知道(例如导入)组件文件。
干杯
答案 1 :(得分:1)
另一个解决方案是使用单例模式:一个实例,所有内容都通过静态访问器引用。
效果差不多。静态引用静态属性的实例的唯一优点是实例可以是继承的一部分,并且可以实现接口。
我也遇到了一些与静态值绑定的间歇性问题,但这可能是以前的版本,PEBCAK等。
干杯