Informations succinctes: J'utilise Flex 3.5.Flex annule un événement de modification sur un arbre
J'ai un composant Tree qui est utilisé comme un menu de navigation entre différentes 'pages'. Lorsque l'utilisateur clique sur une certaine option dans le menu, je permute la «page» en basculant entre les composants d'état dans mon application. Le fait est que lorsque l'utilisateur clique bien sur une option dans le menu, je veux effectuer une validation de certaines informations dans un certain composant. Si la validation échoue, je montre une alerte, et je voudrais empêcher la navigation vers l'autre page. Une partie de ceci ne change tout simplement pas l'état actuel du document, mais le composant arbre continue avec l'événement change, et le résultat est la page A toujours affichée à l'écran, alors que l'option sélectionnée dans l'arbre est la page B (auquel l'utilisateur voulait naviguer, mais a échoué car certaines informations n'étaient pas valides).
J'ai essayé de comprendre comment je peux annuler l'événement de changement sur le composant d'arbre lui-même. Les pensées que j'avais ne correspondaient pas très bien:
J'ai cherché un événement légèrement différent (comme 'changing' ou 'startChange') sur lequel je peux appeler la méthode stopPropagation() (depuis le 'changement' régulier 'event n'est pas annulable), mais aucun n'existe pour le composant Tree. J'ai également pensé à toujours enregistrer l'option actuelle qui est sélectionnée dans le composant Tree par moi-même, et lorsque la validation échoue, je vais définir l'élément selectedItem de l'arbre à cette option sauvegardée. C'est aussi moche parce qu'une telle action soulèvera un autre événement de changement sur l'arbre, donc un autre changement aux composants d'états, et une autre population de la page dans laquelle je suis déjà. C'est quelque chose que je ne veux vraiment pas faire. Je pense aussi à l'utilisation d'un composant différent, tel que Menu (et j'ai également trouvé une implémentation d'un menu vertical), mais cela ne semble même pas aider. Le même problème existera là.
Existe-t-il un moyen approprié de le faire? Il doit y avoir une meilleure pratique pour empêcher un processus de modification de s'engager!