2010-04-09 6 views
0

J'ai une application flexible où j'ai un contrôle TREE à gauche et une vue sur la droite et quand quelqu'un sélectionne l'arbre, il charge le viewstack nommé en fonction de la valeur de nœud caché du XML de l'arbre. Mais il lance une erreur 1065 variable non définie sur un viewstack qui a travaillé sur le dernier rafraîchissement/rechargement du navigateur. Ce n'est pas lié à un viewstack particulier de ce que je peux dire qu'il semble juste jeter l'erreur sur certains événements de rendu. J'ai essayé d'utiliser creationpolicy = "all" sur la viewstack mais cela ne semble pas être utile.viewstack provoquant une erreur 1065 variable non définie problème?

public function treeChanged(event:Event):void { 

      selectedNode=Tree(event.target).selectedItem as XML; 
      //trace([email protected]); 
      //Alert.show([email protected]() + " *"); 

      if([email protected]() == '' || [email protected]() == null){ 
       //Alert.show("NULL !"); 
       return; 
      } 


      mainviewstack.selectedChild = Container(mainviewstack.getChildByName([email protected]())); //Container(mainviewstack.getChildByName([email protected])); 

Si j'ajoute dans une zone d'alerte avant l'option getChildByName ViewStack a le temps de rendre et tout fonctionne bien, il me conduit à croire que l'application ne donne pas assez de temps pour charger le ViewStack?

Répondre

0

Où exactement se produit l'erreur? Avez-vous un stacktrace? Où inscrivez-vous l'écouteur d'événement treeChanged()?

Vous pouvez essayer d'ajouter l'écouteur d'événement dans un écouteur d'événements pour FlexEvent.CREATION_COMPLETE. Tous les composants doivent avoir été initialisés à ce moment-là.

La façon dont vous ajoutez votre écouteur d'événement me semble correcte mais je ne suis pas sûr du timing. Voici donc un exemple d'ajouter l'écouteur d'événement pour CREATION_COMPLETE (en supposant qu'une toile est votre élément contenant):

<mx:Canvas creationComplete="onCreationComplete"> 
    <mx:Script><![CDATA[ 
      private function onCreationComplete():void { 
       tree.addEventListener(TreeEvent.Change, treeChange) 
      } 
     ]]> 
    </mx:Script> 
    <mx:Tree id="tree" ... /> 
</mx:Canvas> 

S'il vous plaît pas que je ne l'ai pas testé, je viens d'écrire cela sur la route. Certains noms peuvent être faux, mais cela devrait vous donner la bonne idée.

+0

L'erreur se produit sur la ligne mainviewstack.selectedChild = Container (mainviewstack.getChildByName (selectedNode @ hidden.toString()).); //Container(mainviewstack.getChildByName([email protected])); j'enregistrer le changement d'arbre ici Pouvez-vous donner un exemple sur comment utiliser FlexEvent.creation complete? – Jason

+0

Im également en utilisant flex sdk 3.0 dois-je le mettre à jour? – Jason

+0

ReferenceError: Erreur # 1065: La variable n'est pas définie. \t at global/flash.utils :: getDefinitionByName() \t at mx.utils :: DescribeTypeCache $/describeType() [C: \ autobuild \ 3.4.0 \ frameworks \ projets \ framework \ src \ mx \ utils \ DescribeTypeCache .as: 95] \t à mx.utils :: ObjectUtil $/getClassInfo() [C: \ autobuild \ 3.4.0 \ frameworks \ projets \ cadre \ src \ mx \ utils \ ObjectUtil.as: 838] \t à mx.controls :: DataGrid/generateCols() [C: \ autobuild \ 3.4.0 – Jason

Questions connexes