次のカスタムコンポーネントがあるとします。
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
[Bindable]
public var prop:String;
private function formatProp() : String {
return "Hello, " + prop;
}
]]>
</fx:Script>
<s:Label text="User: {prop}"/>
<s:Label text="Greeting: {formatProp()}"/>
</s:Group>
このようにアプリケーションに追加すると、次のようになります。
<local:MyComponent prop="Hello"/>
結果は次のようになります。
ユーザー:マーク あいさつ:こんにちは、null
Flexはprop
、子ラベルを初期化した後でカスタムコンポーネントを設定しているようです。そのため、ユーザーラベルを設定するには、プロパティchangedイベントに依存しています。
最初にバインディングを評価する前に、Flexにコンポーネントのすべてのプロパティが設定されるのを待たせるエレガントな方法はありますか?
注:formatProp関数は簡単で、インラインに含めることができますが、これは単純化された例にすぎません。