如何绑定到ArrayCollection中的第一项?

时间:2009-09-07 09:15:14

标签: data-binding flex3

我的应用程序适用于MVC模型。该模型包含一个包含ArrayCollection的Bindable类(BindableItemsClass)。我想将视图中的一些东西绑定到Bindable类的ArrayCollection中的第一个项(因此属性'firstItem')。

问题是当使用setter'set firstItem(value:Object)'时,绑定到该属性的视图组件不会更新。

有没有办法手动触发属性'firstItem'的绑定?

[Bindable]
public class BindableItemsClass extends EventDispatcher
{
    private var _items:ArrayCollection;

    public function get items():ArrayCollection
    {
        return _items;
    }

    public function set items(value:ArrayCollection):void
    {
        _items = value;
    }

    public function get firstItem():Object
    {
        if(_items && items.length>0)
            return items[0];
        else
            return null;
    }

    public function set firstItem(value:Object):void
    {
        if(value)
            items = new ArrayCollection([value]);
        else
            items = new ArrayCollection();
    }
}

1 个答案:

答案 0 :(得分:0)

发送一个更改事件以触发setter中的绑定:

dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));

那应该有效。

如果没有,那么你可能还需要注释你的getter:

[Bindable("dataChange")]
public function get firstItem():Object
{
    if(_items && items.length>0)
        return items[0];
    else
        return null;
}

这明确定义了函数的绑定侦听器,因此观察此属性将理解要侦听的事件。