LoginSignup
1
1

More than 1 year has passed since last update.

Apache Flexのデータバインディングの使い方

Last updated at Posted at 2019-09-24

はじめに

Apache Flexのデータバインディングの使い方を簡単にまとめます。

文字列のデータバインディング

tmp.png

mxml
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
					   xmlns:s="library://ns.adobe.com/flex/spark">
	<fx:Script>
		<![CDATA[
			[Bindable]
			private var message:String = "Hello World";
		]]>
	</fx:Script>
	<s:Label left="10" top="15" text="{message}" />
	<s:TextInput left="10" top="40" text="@{message}" />
</s:WindowedApplication>

バインディングしたいデータに[Bindable]をつけておきます。(今回は、message)

画面側で、text="{message}"のように{}で囲んで指定することで、データバインディングができます。
messageの値が変わった場合、リアルタイムに画面の表示に反映されます。

バインディングを双方向にしたい場合は、text="@{message}"のように@{}で囲んで指定することで、双方向のデータバインディングができます。
双方向にすることで、messageの値の変更をリアルタイムに反映するだけでなく、TextInput等のUIコンポーネントを利用することでmessageの値をリアルタイムに更新することが可能となります。

数値のデータバインディング

tmp2.png

mxml
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
					   xmlns:s="library://ns.adobe.com/flex/spark">
	<fx:Script>
		<![CDATA[
			[Bindable]
			private var count:int = 5;
		]]>
	</fx:Script>
	<s:Label left="10" top="15" text="{count}" />
	<s:NumericStepper left="10" top="40" value="@{count}" />
</s:WindowedApplication>

数値についても同様です。

プロパティのデータバインディング

tmp3.png

mxml
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
					   xmlns:s="library://ns.adobe.com/flex/spark"
					   fontFamily="Meiryo">
	<fx:Script>
		<![CDATA[
			import mx.collections.ArrayCollection;

			[Bindable]
			private var ac:ArrayCollection = new ArrayCollection([
				{c1: 100, c2: "aaa"},
				{c1: 200, c2: "bbb"},
				{c1: 300, c2: "ccc"}
			]);
		]]>
	</fx:Script>
	<s:Label left="10" top="15" text="データは{ac.length}件です" />
	<s:DataGrid left="10" top="40" right="10" bottom="10" dataProvider="{ac}" >
		<s:columns>
			<s:ArrayList>
				<s:GridColumn headerText="列1" dataField="c1" />
				<s:GridColumn headerText="列2" dataField="c2" />
			</s:ArrayList>
		</s:columns>
	</s:DataGrid>
</s:WindowedApplication>

text="データは{ac.length}件です"のように指定することで、プロパティのデータバインディングができます。
ArrayCollectionのlengthの値が変わった場合、リアルタイムに画面に反映されます。
個人的にはよく使います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1