Flex 3: Affectation des données à un sous-composant échoue dans un composant MXML dans le bloc de script d'action

voix
0

Je suis en train de propager une affectation au paramètre de données d'un sous-composant à travers son setter de composant parent. Comme ça:

<CustomComponent
     xmlns:mx=http://www.adobe.com/2006/mxml
     xmlns=components.*
    >
    <mx:Script>
        <![CDATA[
            public override function set data(val:Object):void
            {
                super.data = val;

                subComponent.data = val; //ref #1
            }
        ]]>
    </mx:Script>
    <CustomSubComponent id=subComponent
        />
</CustomComponent>

Quand je courais ma demande, la sous-composante n'a jamais reçu ses données. Lorsque le débogage et le renforcement de la ligne marquée « ref n ° 1 », le débogueur saute de la méthode et continue à autre chose comme si la méthode était complète. Il semble comme une exception ou une erreur a été jeté, mais la console ne donne aucune indication de ce qui ne va pas avec cette mission.

Est-ce que je fais ici quelque chose de stupide? Il semble assez simple.

Environnement: Ceci est à l'aide du SDK Flex 3.2, avec le Flex Builder 3 plug-in pour Eclipse sous Windows, avec Flash 9 Debug ver. pour IE7.

Remarque: Avec cet exemple particulier, je suis en train d'éviter une liaison sur le but. Je veux dire, pourquoi je ne peux pas pousser manuellement les données à la sous-composante plutôt que le liant?

Créé 26/08/2009 à 23:20
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
2

Flex supprime les erreurs à l'intérieur des setters de données, parce que des choses est souvent nulle. Le problème est probablement que votre sous-composant est pas initialisé lorsque les données de jeu est appelé. Si vous ne pouvez vraiment pas utiliser la liaison (la manière simple et propre), alors vous devriez retarder le réglage des données du sous-composant jusqu'à ce qu'il soit initialisé avec invalidateProperties / commitProperties.

Dans le poseur de données, appelez invalidateProperties () et mettre un drapeau en disant qu'ils ont changé.

Remplacer commitProperties (ne pas oublier d'appeler super), vérifier le drapeau, et s'il est vrai, définissez les données du sous-composant.

Si votre commitProperties bloc ne sera jamais appelé, essayez invalidateProperties sur creationComplete.

Créé 27/08/2009 à 22:13
source utilisateur

voix
0

Quels sont les composants de votre composant personnalisé et un composant sous basé sur? Que font-ils étendent?

J'ai essayé un exemple de base et extension HBox VBox et tout est bien passé.

Vous pouvez voir le résultat ici , vue source activée.

Je devine que j'avais aucun problème parce que je extension des composants qui sont ajoutés à la liste d'affichage de sorte qu'il fait partie de leur cycle de vie sont à vérifier avec les parents pour des mesures / données / etc.

J'espère que cela aide

Créé 27/08/2009 à 00:25
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more