Flex:有没有办法将ComboBox的selectedItem绑定到变量?

JD *_*cks 7 apache-flex

好的我有一个ComboBox,dataProvider是一个具有label属性的对象数组,它为ComboBox提供了选项列表.

有没有办法我可以拥有像mySelectedItem这样的变量,并将ComboBox的selectedItem绑定到它,这样如果它改变了,ComboBox的selectedItem会改变为它是什么?

我希望这是有道理的.

谢谢!

Coo*_*une 16

是的,ComboBox的selectedItem属性是可绑定的.

它会是这样的:

<mx:ComboBox selectedItem="{mySelectedItem}">
</mx:ComboBox>
Run Code Online (Sandbox Code Playgroud)

在你的AS:

[Bindable]
var mySelectedItem:Object;
Run Code Online (Sandbox Code Playgroud)

对mySelectedItem的更改应显示在ComboBox中.如果mybolectedItem引用的项在ComboBox的dataProvider中不存在,则可能会出错.


Chr*_*ill 9

从表面上看,它很简单:

<mx:ComboBox id="myComboBox"
   dataProvider="{myDataProvider}"
   selectedItem="{defaultItem}"/> 
Run Code Online (Sandbox Code Playgroud)

当您将defaultItem(确保它是[Bindable])设置为数据提供程序中的某个项目时,它将更新控件.

但这种方法存在问题.除非currentDefaultItem始终在myDataProvider之后更改,否则对dataProvider的绑定可能会撤消选择,恢复为默认值(列表中的第一项).

解决这个问题的一种方法是通过在提供selectedItem的调用中包含dataProvider来强制selectedItem在dataProvider之后反弹.

<mx:ComboBox id="myComboBox"
   dataProvider="{myDataProvider}"
   selectedItem="{getSelectedItem(myComboBox.dataProvider, defaultItem)}"/>
Run Code Online (Sandbox Code Playgroud)

这样做的确保当currentDefaultItem更改时或者dataProvider更改后,selectedItem将被反弹.我自己也对其他解决方案感兴趣.