2009-09-07 5 views
1

Мое приложение работает с моделью MVC. Модель содержит класс Bindable (BindableItemsClass), который содержит ArrayCollection. Я хочу связать некоторые вещи в представлении с первым элементом в массиве ArrayCollection класса Bindable (отсюда и свойство firstItem).Как связать с первым элементом в ArrayCollection?

Проблема заключается в том, что при использовании 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

отправляет событие изменения, чтобы вызвать связывание в инкубаторе:

dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE)); 

, который должен работать.

, если нет, то вы, возможно, также необходимо аннотировать добытчик:

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

Это явно определяет обязательный слушатель функции так свойство смотреть это понять, какое событие для прослушивания.

Смежные вопросы