変数へのバインディングと双方向バインディング
BindingってクラスがFlexにはあったんですね。
知らなかったです。
これを利用すると簡単に双方向バインディングが実現できる。
今から紹介するソースは、
双方向バインディングの例ではないですけど、
これに使えると思ったソースです。
今まで、僕はmxmlのScriptタグないで宣言した変数へのバインディングは、
テキストフィールドの値が変更されたときのイベントである
changeイベントの送出があったときに
テキストフィールドの値を変数へ代入するというように実装していました。
しかし、それだと、コードが長くなって大変でした。
以下のようなコードが必要で、Changeイベントの送出をとるために、
コンポーネントにもchange属性を設定しなくてはいけない。
<mx:Script> <![CDATA[ private var text:String = ""; public function onChange(event:Event):void { text = textInput.text; } ]]> </mx:Script>
だけど、Bindingを使うと、以下の1行だけでOKである。
テキストフィールドが1個の場合は上の例でも大丈夫だが、
テキストフィールドの数が多いと、下の例の方がコードがすっきりします。
<mx:Binding source="textInput.text" destination="text"/>
一応、Bindingを使用したサンプルコードを載せておきます。
<?xml version="1.0" encoding="utf-8"?> <!-- 変数へのバインディング --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ [Bindable] private var text:String = ""; ]]> </mx:Script> <mx:Binding source="tinTest.text" destination="text"/> <mx:TextInput id="tinTest" fontSize="14"/> <mx:Label text="{text}" fontSize="14"/> </mx:Application>