2011-06-29 7 views
0

2ウェイバインディングの不自由さは皆が気に入っています。しかし、キャンセルボタンを押した場合に、影響を受けたデータを簡単にリセットする方法。双方向バインディングでデータをリセットするのに不便な方法:Flex 4.1

私はインターネット上で(ほとんど:D)回答を求めていますが、私が見たすべてのサンプルでは、​​リセットボタンはo_0という形式ではありません。

ご意見がありましたら、お手伝いください。私は2件のウェイのデータが古い値に値をリセットしたい場合は、多くの場合

に非常に便利なように結合考える

おかげ

+0

個人的には、私はこの2つの方法で結びついているわけではありません。私はデータが必要になるまで変更しないことを好みます(他の場所で使用している場合はデータバインディングも節約します)。[私のブログでこれについて投稿します](http://www.michelboudreau.com/2009/12/ –

答えて

0

。古い値のコピーを保存する必要があります。これを行う方法はたくさんあります。 1つは、入力が入力される前にデータの「コピー」を行うことです。リセットクリックハンドラでは、保存された値をフォームの入力値にコピーするだけです。

もう1つの方法は、問題のコンポーネントで 'focusIn'イベントをリッスンすることです。あなたには、いくつかのパブリック変数に格納する古い値を、onFocusInイベントハンドラで

<s:TextInput id="textInput" focusIn="onFocusIn()"/> 

保存:あなたはTextInputコントロールのtextプロパティにbidningている場合たとえば、あなたはこのような何かを行う可能性があります

oldTextInputText = textInput.text; 

リセットハンドラでは、値をスワップするだけです。

textInput.text = oldTextInputText; 
+0

あなたの答えはありがとうございます。しかし、私たちのオブジェクトグラフはテキストとして単純ではなく非常に大きくなりますので、それらをコピーすると、ドロップダウンリストのselectedItemは正しく動作しません。 –

+0

@Pham Huy Anh私はこのアプローチが複雑なオブジェクトやDropDownListで動作しない理由は見当たりませんが、コードを共有していないので、あなたは何の問題があるのか​​推測することができません。 – JeffryHouser

+0

...多分それselectedItemの問題を作り出したコーディングロジックでした...データをロールバックする "ネイティブな方法"がない場合は、あなたの解決策は最高のものだと思うので、私はあなたの答えをACCEPTEDとしてチェックする前にもう一度ハングします。 –

関連する問題