Impossible de lier les données à partir d'un composant personnalisé. J'ai essayé BindUtilis et {} mais je n'arrive pas à le comprendre. Voici ce que j'ai:Impossible de lier à la propriété du composant personnalisé
J'ai un DataModel de classe qui a été fait bindable
Au sein Mainn.mxml J'ai deux composants: DataGrid (utilisé pour les tests) & CustomComponent (qui étend Canvas)
Lorsque les données dans DataModel.somelist sont mises à jour, le DataGrid reflète les modifications, mais le CustomComponent n'apparaît pas.
Je m'attendais à voir le trace (CustomComponent.dataProvider) déclenché chaque fois que this._dataModel.itemList est modifié. Qu'est-ce que je fais mal?
Main.mxml ressemble à ceci:
<mx:Script>
<![CDATA[
import model.DataModel;
[Bindable]
private var _dataModel:DataModel = DataModel.getInstance();
]]>
</mx:Script>
<mx:VBox width="100%" height="100%">
<views:ItemDisplayList width="100%" height="300" id="idl" >
<views:dataProvider>
{this._dataModel.itemList}
</views:dataProvider>
</views:ItemDisplayList>
<mx:DataGrid id="dg" width="100%" height="300" >
<mx:dataProvider>
{this._dataModel.itemList}
</mx:dataProvider>
</mx:DataGrid>
</mx:VBox>
Le CustomComponent a cette classe AS:
package code{
import model.DataModel;
import mx.containers.Canvas;
public class CustomComponent extends Canvas{
[Bindable]
private var _dataModel:DataModel = DataModel.getInstance();
private var _dataProvider:ArrayCollection ;
public function CustomComponent(){
super();
_dataProvider = new ArrayCollection();
trace("CustomComponent start");
}
public function get dataProvider() : ArrayCollection {
trace("get dataProvider");
return _dataProvider;
}
public function set dataProvider(value: ArrayCollection) : void {
trace("set dataProvider");
this._dataProvider = value;
invalidateProperties();
invalidateSize();
invalidateDisplayList();
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
}
...
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number) : void{
trace("updateDisplayList");
super.updateDisplayList(unscaledWidth, unscaledHeight);
}
}
}
Merci Lance. J'avais le sentiment que quelque part un auditeur était ajouté, je suppose que j'espérais que l'utilisation de Bindable ou de BindUtils pourrait être automatique. Quoi qu'il en soit, je vais suivre votre conseil ici et voir où cela me mène. – Trist