mx.binding.utils.BindingUtils クラスを使用すると、ActionScript でデータバインディングを定義できます。このクラスでは静的メソッドが定義されています。bindProperty() メソッドを使用すると、変数として実装されているプロパティへのデータバインディングを作成できます。または、bindSetter() メソッドを使用して、メソッドへのデータバインディングを作成できます。bindProperty() メソッドの使用例については、データバインディングの例を参照してください。
MXML でのコンパイル時データバインディングの定義と、ActionScrip での実行時データバインディングの定義には、いくつかの相違点があります。
次の例では、bindSetter() メソッドを使用してデータバインディングを設定しています。bindSetter() メソッドには、次の引数を指定できます。
次の例では、TextInput コントロールにテキストを入力すると、テキストが TextArea コントロールにコピーされるときに大文字に変換されます。
<?xml version="1.0"?>
<!-- binding/BindSetterAS.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.binding.utils.*;
import mx.events.FlexEvent;
// Method called when myTI.text changes.
public function updateMyString(val:String):void {
myTA.text = val.toUpperCase();
}
<!-- Event listener to configure binding. -->
public function mySetterBinding(event:FlexEvent):void {
var watcherSetter:ChangeWatcher =
BindingUtils.bindSetter(updateMyString, myTI, "text");
}
]]>
</mx:Script>
<mx:Label text="Bind Setter using setter method"/>
<mx:TextInput id="myTI"
text="Hello Setter" />
<mx:TextArea id="myTA"
initialize="mySetterBinding(event);"/>
</mx:Application>
前の例で実行する SWF ファイルは以下のとおりです。
Flex に組み込まれている mx.binding.utils.ChangeWatcher クラスを使用すると、データバインディング Watcher を定義できます。通常、バインディングが発生すると、データバインディング Watcher からイベントリスナーが呼び出されます。データバインディング Watcher を設定するには、次の例のように ChangeWatcher クラスの静的メソッド watch() を使用します。
<?xml version="1.0"?>
<!-- binding/DetectWatcher.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="initWatcher();">
<mx:Script>
<![CDATA[
import mx.binding.utils.*;
import mx.events.FlexEvent;
import mx.events.PropertyChangeEvent;
public var myWatcher:ChangeWatcher;
// Define binding watcher.
public function initWatcher():void {
// Define a watcher for the text binding.
ChangeWatcher.watch(textarea, "text", watcherListener);
}
// Event listener when binding occurs.
public function watcherListener(event:Event):void {
myTA1.text="binding occurred";
// Use myWatcher.unwatch() to remove the watcher.
}
]]>
</mx:Script>
<!-- Define a binding expression to watch. -->
<mx:TextInput id="textinput" text="Hello"/>
<mx:TextArea id="textarea" text="{textinput.text}"/>
<!-- Trigger a binding. -->
<mx:Button label="Submit" click="textinput.text='Goodbye';"/>
<mx:TextArea id="myTA1"/>
</mx:Application>
前の例で実行する SWF ファイルは以下のとおりです。
データバインディング Watcher のイベントリスナーを 1 つ定義し、イベントリスナーはイベントオブジェクトを格納する引数を 1 つ受け取ります。イベントオブジェクトのデータ型は、監視対象のプロパティによって決まります。バインド可能プロパティからはそれぞれ、異なるイベントタイプと関連するイベントオブジェクトを送出できます。イベントタイプの特定について詳しくは、Bindable メタデータタグの使用を参照してください。
バインド可能プロパティによって送出されたデフォルトのデータ型であるため、多くのイベントリスナーが PropertyChangeEvent 型のイベントオブジェクトを受け取ります。すべての Flex イベントの基本クラスであるイベントタイプ flash.events.Event は、常に指定できます。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート