2009-03-11 23 views
0

izle:Flex: Veri bağlama bu MXML bileşeni göz önüne alındığında

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

Nasıl bir olay gönderildiğinde alabilirsiniz zaman test2.text.length > 5 değişikliklerin değeri? Ben ChangeWatcher, BindUtils ve PropertyChangeEvent denedim ama hiçbir şans :(

teşekkürler;

[DÜZENLE]

daha aşağı gelen yorumlarımı kopyalama:

Eh ... Ben aslında kendi TextField bileşenimde validationResult adı verilen yeni bir bindable alan kullanıyor.Çok lot yerine atomik doğrulamaları yapmaya çalışıyorum.Neyse, test2.text.length> 5 koşul örnek başına tanımlanabildiğinden hardcode bunu beğenmeliyiz

Örnek MXML:

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

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

+0

mx kullanıyor musunuz: Text veya mx: TextArea? Mx yok: TextBox ... – onekidney

+0

Benim kötü; aslında genişletilmiş bir TextInput. Aşağıdaki cevap için yorumumu okuyun. –

+0

Sorunu anlamıyorum. Neden NewTextInput validationResult setter değiştiğinde bir olay gönderemez? Ya da bir etkinlikle ikiye katlanabilir mi? – Brian

cevap

1

Neden test2 değişimi olayı içinde yeni bir olay üzerinden?

nedenle sahip

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

Şey ... Aslında yeni bir bindable alanı kullanıyorum, kendi TextField bileşenimde validationResult adı verilir. Bütün parti yerine atomik doğrulamaları yapmaya çalışıyorum. Neyse. Test2.text.length> 5 koşulu her bir örnek için tanımlanmıştır, böylece böyle bir kod yazamam. –

+0

Örnek 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

verileri tutmak için özel bir değişkenle bir get/set çiftine, ve ayarlayıcı farklı olan her çağrıldığında zaman olarak "validationResult" tanımlanamıyor o zaman değişkene değer verin, değeri ayarlayın, sonra kendi özel etkinliğinizi gönderilsin mi? Bu, Flex çerçevesindeki olayın ne kadarının yapıldığıdır.