2009-03-11 10 views
0

Compte tenu de cette composante MXML:Flex: Databinding montre

<mx:TextBox id="test" text="{test2.text.length &gt; 5}" />

Comment puis-je obtenir un événement distribué chaque fois que la valeur de test2.text.length > 5 changements? J'ai essayé ChangeWatcher, BindUtils et PropertyChangeEvent, mais pas de chance :(

Merci,

[EDIT]

Copie mes commentaires de plus bas:

Eh bien ... Je suis En fait j'utilise un nouveau champ pouvant être lié, dans mon propre composant TextField, appelé validationResult.J'essaie de faire des validations atomiques au lieu de tout le lot.En tout cas, la condition test2.text.length> 5 est définie par instance, donc je ne peux pas code-barres comme ça

Exemple MXML:

<nui:NewTextInput id="mensualDeclarado2" validationResult="{mensualDeclarado3.text.length >= 5 && mensualDeclarado3.text.length <= 10)}" />

<nui:NewTextInput id="mensualDeclarado3" text="1234567890" />

+0

Utilisez-vous mx: Text ou mx: TextArea? Il n'y a pas de mx: TextBox ... – onekidney

+0

Mon mauvais; c'est en fait un TextInput étendu. Lisez mon commentaire pour la réponse ci-dessous. –

+0

Je ne comprends pas le problème. Pourquoi ne pas avoir le valideur NewTextInput validationResult envoyer un événement quand il change? Ou le rendre liant avec un événement? – Brian

Répondre

1

Pourquoi pas par un nouvel événement dans l'événement de changement de test2?

si vous avez

private var _lengthCheck:Boolean = false; 
function test2_ChangeHandler(event:Event):void 
{ 
    if (_lengthCheck != (test2.text.length > 5)) 
    { 
     _lengthCheck = (test2.text.length > 5); 

     if (test2.text.length > 5) 
      dispatch(new Event("LENGTH_GREATER_THAN_5")); 
     else 
      dispatch(new Event("LENGTH_LESS_THAN_5")); 
    } 
} 
+0

Eh bien ... J'utilise en fait un nouveau champ pouvant être lié, dans mon propre composant TextField, appelé validationResult. J'essaie de faire des validations atomiques au lieu de tout. En tous cas. la condition test2.text.length> 5 est définie par instance, donc je ne peux pas la coder en dur comme ça. –

+0

Exemple MXML:

0
<mx:Script> 
<![CDATA[ 
    private var _test2 : String = "test2.text.length &gt; 5"; 

    public function set test2(_test2 : String) : void{ 
     dispatchEvent(new Event("test2CHANGED")); 
     this._test2 = _test2; 
    } 
]]> 
</mx:Script> 
<mx:TextBox id="test" text="{_test2}" /> 
0

Ne peut pas vous définir « ValidationResult » comme get/set paire avec une variable privée pour contenir les données, et chaque fois que le compositeur est appelé avec un autre valeur puis la variable, définissez la valeur, puis envoyez votre propre événement personnalisé? C'est la quantité de distribution d'événements dans le framework Flex qui est effectuée.