J'ai donc un module en flex dans lequel j'ajoute un composant personnalisé. J'ai aussi une classe qui gère les données que je veux montrer, appelons cette classe DataHandler. Le DataHandler reçoit des données de la solution dorsale, puis commence à mettre les données ensemble pour mon module et le composant personnalisé.Reliure profonde dans Flex
Lorsque les données sont prêtes, un événement est intercepté par mon module. J'envoie les nouvelles données à mon composant.
exemple de code pour ce dans le module:
private function onDataChange(evt:Event=null):void
{
_customComponent.ItemData = _dataHandler.DataProvider;
}
Le _customComponent obtient alors les données:
public function set ItemData(value:ItemDataVO):void
{
_itemdata = value;
}
// _itemdata est une classe personnalisée nommée ItemDataVO
Maintenant, dans mon composant personnalisé Je lie simplement les données à mes composants mxml, par exemple
<mx:Label
text = "Text: {_itemdata.Text}"
fontFamily = "Hel"
fontSize = "12"
x = "83"
y = "40" />
Lorsque j'obtiens de nouvelles données, l'étiquette change automatiquement.
Jusqu'ici tout va bien. Mais ce que j'ai aussi dans mon composant personnalisé est i List. Et c'est mon problème. Quand je lie les données à la liste que je fais ce qui suit:
<mx:List
id = "_list"
dataProvider ="{_itemdata.Collection}"
itemRenderer = "components.renderers.CustomRenderer" />
// cette _itemdata.Collection est un ArrayCollection qui contient une collection d'éléments à partir d'une classe personnalisée.
La liaison ne fonctionne pas, et je reçois aussi un Varning pour chaque élément de la liste lors de l'exécution:
avertissement: incapable de se lier à la propriété « parent » sur la classe « modules :: CustomModule »
(j'ai aussi essayé, comme une solution de contournement, pour définir la itemRenderer de _list chaque fois que le ItemData est réglé. les nouvelles listData sont mis à jour alors, mais je ne vois aucune mise à jour visuelle dans la liste.)
tout le monde sait comment faire cela travail de liaison?
Cordialement Adlertz =)
Etes-vous sûr que le problème est dû à cette liaison? Le message d'avertissement semble indiquer le contraire. Que se passe-t-il si vous supprimez uniquement l'attribut dataProvider de l'élément mx: List? –
BTW, il serait grandement améliorer la lisibilité de vos extraits de code si vous avez adhéré aux conventions de codage flex: http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions (par exemple, start attribut et getter/setter noms avec une lettre minuscule). –