コンパイラーによって実装される <fx:Component> タグ
<fx:Component> タグを使用して、MXML ファイル内にインラインアイテムレンダラーやアイテムエディターを定義します。
<fx:Component> タグは、MXML ファイル内に新しいスコープを定義します。このスコープには、<fx:Component> および </fx:Component> タグで区切られた MXML コードブロックによってアイテムレンダラーまたはアイテムエディターのローカルスコープが定義されます。アイテムレンダラーまたはアイテムエディターのローカルスコープ外のエレメントにアクセスするには、エレメント名の先頭に outerDocument キーワードを付けます。
例えば、メインアプリケーションのスコープに localVar という名前の変数を定義し、アイテムレンダラーのスコープに同名の別の変数を定義したとします。アイテムレンダラーの中からアプリケーションの localVar にアクセスするには、この変数の先頭に outerDocument キーワードを付けます。次に例を示します。
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
// Variable in the Application scope.
[Bindable]
public var localVar:String="Application localVar";
// Data includes URL to album cover.
private var initDG:Array = [
{ Artist:'Pavement', Album:'Slanted and Enchanted', Price:11.99,
Cover:'http://localhost:8100/f15/slanted.jpg'},
{ Artist:'Pavement', Album:'Brighten the Corners', Price:11.99,
Cover:'http://localhost:8100/f15/brighten.jpg'}
];
]]>
</fx:Script>
<mx:DataGrid id="myGrid" dataProvider="{initDG}"
variableRowHeight="true">
<mx:columns>
<mx:DataGridColumn dataField="Artist"/>
<mx:DataGridColumn dataField="Album"/>
<mx:DataGridColumn dataField="Cover">
<mx:itemRenderer>
<fx:Component>
<mx:VBox>
<fx:Script>
<![CDATA[
// Variable in the renderer scope.
public var localVar:String="Renderer localVar";
]]>
</fx:Script>
<mx:Text id="albumName" width="100%" selectable="false" text="{data.Album}"/>
<mx:Image id="albumImage" height="45" source="{data.Cover}"/>
<mx:TextArea text="{'Renderer localVar= ' + localVar}"/>
<mx:TextArea text="{'App localVar= ' + outerDocument.localVar}"/>
</mx:VBox>
</fx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="Price"/>
</mx:columns>
</mx:DataGrid>
</s:Application>
outerDocument キーワードの用途の 1 つは、インラインアイテムエディター内でコントロールのデータプロバイダーを初期化することです。例えば、Web サービスなどのメカニズムを使用して、都道府県リストのようなデータをアプリケーションに渡す場合、このリストを保持するアプリケーションの単一のプロパティから、アイテムエディターとして使用する ComboBox コントロールをすべて初期化できます。
MXML シンタックス
<fx:Component> タグのシンタックスは次のとおりです。
<fx:Component
id=""
className=""
>
...
child tags
...
</fx:Component>
空の <fx:Component></fx:Component> タグは作成できません。<fx:Component></fx:Component> タグ内に 1 つ以上の子タグを定義する必要があります。
id プロパティを使用すると、インラインコンポーネントの識別子を指定して、それをデータバインディング式のソースとして使用することができます。
className プロパティを使用すると、Flex で生成されたインラインコンポーネントのクラスの名前を指定して、そのコンポーネントのエレメントを ActionScript で参照可能にすることができます。詳細については、『Using Adobe Flex 4』の「Using Item Renderers and Item Editors」の章を参照してください。
Tue Jun 12 2018, 10:52 AM Z