我在2个不同的屏幕上有2个ComboBox。这是每个的selectedIndex:
selectedIndex="@{model.generalInfo.ownerInfoVO.onBehalfOfSelectedIndex}"
当我在一个屏幕上进行更改时,我希望在另一个屏幕上看到CB的selectedIndex正确。
在另一个屏幕上,selectedIndex为-1;即使CB具有正确的价值。
这仅在我第一次进入第二个屏幕时发生。之后的每隔一段时间就像一个魅力。
为什么第一次无法设置所选索引?我错误地使用双向绑定吗?在这种情况下我甚至需要它吗?
感谢任何有用的提示。
更新:
以下是我现在使用的代码,以确保我只设置一次所选索引(即使重复设置了模型对象)。
private var updateModel:Boolean = true;
private var _model:TransporterModel;
public function set model( m:TransporterModel ):void{
_model = m;
}
[Bindable]
public function get model():TransporterModel{
return _model;
}
override protected function commitProperties():void{
super.commitProperties();
if( updateModel )
initDelegatorsCB();
else
return;
updateModel = false;
}
private function initDelegatorsCB():void
{
cboDelegators.selectedIndex = model.generalInfo.ownerInfoVO.onBehalfOfSelectedIndex;
var coll:ArrayCollection = cboDelegators.dataProvider as ArrayCollection;
var item:Object = coll.getItemAt( cboDelegators.selectedIndex );
cboDelegators.selectedItem = item;
}
更新#2
@AmyBlankenship。我认为这更像是你在说什么,对吧?
public function set model( m:TransporterModel ):void{
_model = m;
if( cboDelegators.selectedIndex != model.generalInfo.ownerInfoVO.onBehalfOfSelectedIndex )
updateModel = true;
else
updateModel = false;
}
override protected function commitProperties():void{
super.commitProperties();
if( updateModel )
initDelegatorsCB();
else
return;
}