我的应用程序适用于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();
}
}
答案 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;
}
这明确定义了函数的绑定侦听器,因此观察此属性将理解要侦听的事件。