2009-11-21 5 views
1

Je travaille sur un projet Flex 3 et j'utilise une paire de XMLListCollection (s) pour gérer une combobox et une grille de données.débordement de pile sur XMLListCollection collectionEvent

La pièce combobox fonctionne parfaitement. Le XMLListCollection pour ceci est statique. L'utilisateur choisit un élément et, sur "change", il renvoie un addItem() à la seconde collection. La grille de données de la deuxième collection affiche ensuite la liste mise à jour, et tout va bien.

La grille de données, cependant, est modifiable. Une autre complication est que j'ai un autre gestionnaire d'événements lié à l'événement "change" du second XMLLIstCollection, et dans ce gestionnaire, j'apporte des modifications supplémentaires à la deuxième liste. Ceci provoque essentiellement une boucle infinie (un débordement de pile: D), du deuxième gestionnaire de liste "change".

Je ne sais pas trop comment gérer ça. La recherche a soulevé une idée ou deux concernant la fonctionnalité AutoUpdate, mais je n'ai pas pu tirer grand-chose d'eux. En particulier, le comportement persiste, exécutant les 'mises à jour' dès que je le réactiverai, donc j'imagine que je peux me tromper. Je veux que la mise à jour s'exécute, en général, juste pas PENDANT ce bloc de code.

Merci pour votre aide!

Répondre

0

Essayer de lier le comportement à un événement personnalisé plutôt qu'à l'événement CHANGE.

I.e. faites ce que vous faites maintenant, mais envoyez et gérez un événement personnalisé pour faire le travail.

0

Avez-vous envisagé d'utiliser callLater? Est-ce que la manipulation directe de XMLList source de XMLListCollection a les mêmes résultats? Avez-vous envisagé quelque chose comme:

private function changeHandler(event:Event):void 
{ 
    event.target.removeEventListener(event.type, changeHandler); 

    // your code here. 

    event.target.addEventListener(event.type, changeHandler); 
} 
+0

Cela semble prometteur. Je suis impatient de l'essayer. Merci – reidLinden

Questions connexes