【问题标题】:Rolling Over a spark ItemRenderer switches the view state to default!Rolling Over a spark ItemRenderer 将视图状态切换为默认值!
【发布时间】:2011-04-30 21:14:59
【问题描述】:

我目前正在使用 flex sdk 4.5(但与 4.1 相同),我遇到以下问题:

我将 ItemRenderer 的当前状态绑定到外部对象。该对象通过 Robotlegs 注入器注入到 mxml 视图中。

视图有 4 种状态,只要我不翻转项目本身,一切都可以正常工作。在这种情况下,没有任何明显的解释,即使绑定的 currentState 变量的值没有改变,currentState 也会切换到 defaultstate。为了解决这个问题(并证明绑定的状态值没有改变),我监听状态切换到默认值时创建的按钮的添加事件,并强制 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>

【问题讨论】:

    标签: flex4 mxml


    【解决方案1】:

    查看protected function getCurrentRendererState():Stringspark.components.supportClasses.ItemRenderer (documentation) 并正确覆盖它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 2012-03-15
      • 2021-12-06
      相关资源
      最近更新 更多