2009-09-07 10 views
1

Mon application fonctionne avec le modèle MVC. Le modèle contient une classe Bindable (BindableItemsClass) qui contient un ArrayCollection. Je veux lier certains éléments dans la vue au premier élément de la collection ArrayCollection de la classe Bindable (d'où la propriété 'firstItem').Comment lier au premier élément d'une ArrayCollection?

Le problème est que lorsque setter 'set firstItem (value: Object)' est utilisé, les composants d'affichage qui sont liés à cette propriété ne sont pas mis à jour.

Existe-t-il un moyen de déclencher les liaisons de la propriété 'firstItem' manuellement?

[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(); 
    } 
} 

Répondre

0

distribue un événement de changement pour déclencher la liaison dans le setter:

dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE)); 

Cela devrait fonctionner.

sinon, vous pourriez aussi avoir besoin annoter vos getters:

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

Cela définit explicitement un auditeur de liaison à la fonction si les propriétés à regarder ce comprendront quel événement à écouter.

Questions connexes