2009-03-11 2 views
0

を見る:フレックス:データバインディングは、このMXMLコンポーネントを考える

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

がどのようにイベントが送出得ることができたときにtest2.text.length > 5の値が変化しますか?私ははChangeWatcher、BindUtilsとPropertyChangeEventを試してみましたが、ない運:(

感謝しました。

[EDIT]

私のコメントのコピーをさらに下から:

うーん...私は実際に新しいバインド可能なフィールドを使用して、自分自身のTextFieldコンポーネントでvalidationResultという名前を使用しています。それをハードコードしてください。

例MXML:

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

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

+0

mx:Textまたはmx:TextAreaを使用していますか? mx:TextBoxはありません... – onekidney

+0

私の悪い;実際には拡張TextInputです。以下の答えに対するコメントを読んでください。 –

+0

私はこの問題を理解していません。 NewTextInput validationResultセッターは、変更されたときにイベントをディスパッチしてみませんか?それともイベントにバインド可能にするのですか? – Brian

答えて

1

なぜTEST2の変更イベント内で新しいイベントを通じて?

はそうあなたが持っている

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

まあ私は実際には自分のTextFieldコンポーネントの新しいバインド可能なフィールドを使っています。これはvalidationResultです。私は全体の代わりに原子バリデーションをしようとしています。とにかく。 test2.text.length> 5の条件はインスタンスごとに定義されているので、そのようなハードコードはできません。 –

+0

例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

あなたはデータを保持するためにプライベート変数とのget/setのペア、およびセッターが異なると呼ばれるたびに「validationResult」を定義することはできません値を変数に設定し、値を設定して独自のカスタムイベントをディスパッチしますか?これは、Flexフレームワークでのイベントのディスパッチがどれだけ完了したかを示します。

関連する問題