PDA

Volledige versie bekijken : Repeater multi-dim. Arraycollection Dataprovider


Thomaz
%Europe/Berlin %509 %2007, 12:13
Om de items van een Array te laten zien gebruik ik een Repeater. Ik krijg echter niet de gegevens tevoorschijn die ik wil laten zien. Als dataprovider van de Repeater gebruik ik namelijk een multi-dimentional-array als source van een ArrayCollection:

var arr: Array = new Array([{name:"test1"}], [{name:"test2"}], [{name:"test3"}]);
this.arrColl.source = arr;


De Repeater laat nu netjes 3 items zien. Ik gebruik Buttons in de Repeater. Maar hoe krijg ik "name" in het label van de Button? Dit werkt niet:

<mx:Button label="{String(mijnRepeater.currentItem.name)}" />

TheDutch
%Europe/Berlin %592 %2007, 14:13
mijnRepeater.currentItem[0].name al geprobeerd?

Thomaz
%Europe/Berlin %628 %2007, 15:05
Ja, maar dan kan ik de ArryCollection niet Binden. Tenmindste, dat kan wel, maar wijzigingen worden dan niet gevonden door de Repeater.

Het vreemde is dat het wel werkt wanneer ik de Array direct Bind aan de Repeater. Maar in de docs. staat dat dat niet mag wanneer je een dynamische Array gebruikt. Maar in mijn geval werkt het blijkbaar toch...

Wel krijgt ik in de console een flinke lijst waarschuwingen wanneer ik de app debug:
"warning: unable to bind to property 'name' on class 'Object' (class is not an IEventDispatcher)"

Ik weet nu dus niet precies wat de beste manier is om dit te doen:S

Thomaz
%Europe/Berlin %637 %2007, 15:17
Toevallig lees ik net ergens een post die over hetzelfde probleem gaat. Het lijkt er op dat het een bug is die vanaf versie 2.0.1 optreed in combi met Cairngorm. Hopelijk is er meer info over te vinden.

TheDutch
%Europe/Berlin %839 %2007, 20:09
Het lijkt me sterk dat ze het hebben over hetzelfde probleem als wat jij hebt aangezien Cairngorm helemaal niets veranderd aan de functionaliteiten van Flex. Het biedt alleen maar een architectuur om je applicatie in te bouwen. Kan je me dat artikel laten lezen?

Trouwens waarom maak je geen ArrayCollection met ArrayCollections i.p.v. een Array met Arrays met Objecten? Dan is binding volgensmij geen probleem meer.

Thomaz
%Europe/Berlin %604 %2007, 14:31
Trouwens waarom maak je geen ArrayCollection met ArrayCollections i.p.v. een Array met Arrays met Objecten? Dan is binding volgensmij geen probleem meer.

Tja dat is een goeie. Dat ga ik direct proberen.
Flex is compleet nieuw voor me, dus het is flink zoeken naar de juiste weg.


Over het probleem met Cairngorm heb ik verder niets meer kunnen vinden. Ik vraag me af of het een serieuze bug is.
Het probleem zou zich voordoen na de update naar Flex 2.0.1 En wel dat ArrayCollections, gedeclareerd in de ModelLocator, niet gebruikt kunnen worden tenzij je ze vult.
Dit heb ik zelf wel ondervonden, maar dat kan natuurlijk ook komen omdat ik zelf de dingen niet goed aanpak... :O

TheDutch
%Europe/Berlin %999 %2007, 23:59
Ik kan me voorstellen dat er een bug in Flex 2.0 zat waardoor je dit als DataProvider kon opgeven zonder problemen:

public var myAC:ArrayCollection;

Echter is het voor mij logischer dat dit alleen zou mogen wanneer je ook daadwerkelijk een ArrayCollection instantie hebt aangemaakt zoals dit:

public var myAC:ArrayCollection = new ArrayCollection();

Ik weet verder niet of dit ook de issue was, nog niet getest namelijk. Ik zal het binnenkort eens uitproberen :).

Thomaz
%Europe/Berlin %459 %2007, 11:01
Volgens mij is dit inderdaad het punt waar een aantal ontwikkelaars tegenaan lopen.
Duidelijk geen bug, maar een strakkere aanpak in Flex 2.0.1.