好的我有一个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中不存在,则可能会出错.
从表面上看,它很简单:
<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将被反弹.我自己也对其他解决方案感兴趣.
| 归档时间: |
|
| 查看次数: |
21436 次 |
| 最近记录: |