В настоящее время я использую Flex SDK 4.5 (но то же самое с 4.1), и у меня есть следующая проблема:
Я привязываю текущее состояние ItemRenderer к внешнему объекту. Этот объект вводится в представление mxml через инжектор Robotlegs.
представление имеет 4 состояния, все работает нормально, пока я не переверну сам элемент. В этом случае, без каких-либо явных объяснений, currentState переключается в состояние по умолчанию, даже если связанная переменная currentState не изменилась и является значением. Чтобы решить эту проблему (и доказать, что значение связанного состояния не изменилось), я слушаю добавленное событие кнопки, которое создается, когда состояние переключается на значение по умолчанию, и вынуждает currentState снова переключаться на текущее значение.
Это работает, но, очевидно, плохо, кто-нибудь может сказать мне, что происходит? Спасибо!
пожалуйста, посмотрите на следующий код:
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:modelviews="it.addme.MVVM.modelviews.*"
width="150" height="100" autoDrawBackground="true"
currentState="{modelView.currentState}"
>
<fx:Script>
<![CDATA[
import it.addme.MVVM.modelviews.AddMeButtonPresenter;
[Inject]
[Bindable]
public var modelView:AddMeButtonPresenter;
override public function set data(value:Object):void
{
panel.title = value.appName;
}
protected function button1_addedHandler(event:Event):void
{//I need this to solve the roll-over problem
currentState = modelView.currentState;
}
]]>
</fx:Script>
<s:states>
<s:State name="default" />
<s:State name="USER_UNKNOWN" />
<s:State name="USER_EXISTS" />
<s:State name="USER_DOESNT_EXIST" />
</s:states>
<s:Panel left="0" top="0" width="150" height="100" id="panel">
<s:Button includeIn="USER_UNKNOWN" label="Checking..." enabled="true" horizontalCenter="0"
verticalCenter="0"/>
<s:Button includeIn="USER_EXISTS" label="Unsubscribe" click="modelView.unsubscribe()"
enabled="true" horizontalCenter="0" verticalCenter="0"/>
<s:Button includeIn="USER_DOESNT_EXIST" label="Subscribe" click="modelView.subscribe()"
enabled="true" horizontalCenter="0" verticalCenter="0"/>
<s:Button includeIn="default" label="..." added="button1_addedHandler(event)"
horizontalCenter="0" includeInLayout="false" verticalCenter="0"/>
</s:Panel>
</s:ItemRenderer>