J'essaie actuellement d'utiliser la nouvelle approche d'utilisation de FlexGlobals pour accéder à une ArrayCollection que j'ai dans la vue par défaut d'une application mobile que je développe. Voici le code qui fait la création et la population de ce tableau sur la vue par défaut qui se produit dès que l'application est lancée:Vous souhaitez utiliser FlexGlobals pour accéder à ArrayCollection?
private var ids:ArrayCollection = new ArrayCollection();
private function loop():void
{
var index:int;
for(index = 0; index < compsCollection.length; index++)
{
trace("Element " + index + " is " + compsCollection[index].comp_id);
trace(ids.length);
ids.addItem(compsCollection[index].comp_id);
}
}
Maintenant, quand ce code est exécuté je peux voir clairement à partir de la console que le "ids" ArrayCollection est rempli correctement. Maintenant, sur une vue différente dans l'application, je veux accéder à ces données et l'utiliser pour diverses choses. Je l'ai utilisé le code ci-dessous pour essayer d'accéder aux données pour la ArrayCollection:
protected var ids_list:ArrayCollection = new ArrayCollection();
protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void
{
var obj:Object = FlexGlobals.topLevelApplication.parameters;
ids_list.source = obj.ids;
trace(ids_list.length);
}
Quand j'ai essayé ce je ne suis pas une erreur mais le retour relevé de trace « 0 ». J'ai donc également essayé:
protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void
{
ids_list.source = FlexGlobals.topLevelApplication.parameters.ids;
trace(ids_list.length);
}
Qui a de nouveau renvoyé "0" dans l'instruction trace. J'ai finalement essayé ceci pour voir si cela fonctionnerait:
protected function view1_viewActivateHandler(event:ViewNavigatorEvent):void
{
ids_list.source = FlexGlobals.topLevelApplication.ids;
trace(ids_list.length);
}
Quand j'ai essayé cela et naviguais à la vue où ce code serait initated je suis arrivé cette erreur:
Error #1069: Property ids not found on Main and there is no default value.
Je ne pouvais supposer que la collection ArrayCollection que j'avais créée dans ma vue par défaut n'a pas de valeur une fois que je m'en suis éloigné. Y at-il de toute façon quelqu'un peut m'aider s'il vous plaît à ce sujet car il semble y avoir presque aucune documentation sur la façon de faire ce genre de choses avec FlexGlobals? Merci
Pour en savoir plus sur les raisons pour éviter l'état global, consultez http://misko.hevery.com/code-reviewers-guide/flaw-brittle-global-state-singletons/ –