2010-01-25 10 views
1

Peut-être que je n'ai pas assez dormi la nuit dernière mais je rencontre un problème bizarre de Flex 3.4.Flex + CheckBox + Dataprovider ... probablement la question la plus facile à laquelle vous répondrez aujourd'hui

Scénario:

J'ai une classe qui agit comme un dataprovider à mon application entière nommée "DataProvider.as":

package 
{ 
public class DataProvider 
{ 

    [Bindable] 
    public static var email_enable:Boolean = true; 

} 
} 

Dans une forme mxml, "Settings.mxml" J'ai une case à cocher le contrôle qui est lié à la variable EMAIL_ENABLE de ma classe dataprovider:

<mx:CheckBox x="452" y="170" label="{Language.loadLanguageResource('lblEmail')}" 
      id="chkEmail" 
      selected="{DataProvider.email_enable}" 
      change="onChange()"/> 

Tout va bien aussi loin que d'obtenir la valeur, si je mets la variable dans mon dataprovider soit vrai ou fal se, la case à cocher reflète ce changement; cependant, si je clique sur la case à cocher et change sa valeur, la variable dataprovider ne reflète jamais le changement!

Je me suis cogné la tête contre le mur et je ne peux pas résoudre ce problème. J'ai googlé mon cœur en vain. Sauve-moi, s'il te plaît.

Répondre

4

C'est parce que Flex a une liaison unidirectionnelle, au moins dans 3.x; Flex 4 prend en charge la liaison bidirectionnelle.

Vous devez ajouter un écouteur d'événement à la CheckBox et modifier la variable à partir de l'écouteur.

PS: Vous avez raison, cela est en fait la meilleure question que je répondais aujourd'hui;)

+2

est ici un moyen de faire 2 de manière contraignante, il semble que juste une façon plus complexe de la suggestion de Laith, mais il pourrait jeter plus de lumière sur la question. http://opensource.adobe.com/wiki/display/flexsdk/Two-way+Data+Binding – invertedSpear

+0

Merci monsieur, vous êtes un gentleman et un érudit. –