Combobox双向绑定:SelectedIndex = -1

时间:2013-03-28 14:30:18

标签: actionscript-3 flex

我在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;
        }

0 个答案:

没有答案