Компонент Flex с использованием глобальной переменной - PullRequest
0 голосов
/ 09 ноября 2010

Я использую 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.

Спасибо, Эрни

Ответы [ 2 ]

1 голос
/ 11 января 2011

Другое решение заключается в использовании одноэлементного шаблона: единственного экземпляра, на который все ссылается через статический метод доступа.

Эффект примерно такой же.Единственное преимущество статической ссылки на экземпляр перед статическими свойствами состоит в том, что экземпляр может быть частью наследования и может выполнять интерфейс.

У меня также были некоторые периодические проблемы с привязкой к статическим значениям, ноэто могла быть предыдущая версия, PEBCAK и т. д.

Cheers

1 голос
/ 30 ноября 2010

Использовать статическую переменную в компоненте.

Ссылка на ComponentName.staticVar. Обычно все, что нужно знать о глобале, уже известно (например, об импорте) файла компонента.

Приветствия

...