グラフ/ツリー内のすべてのコンポーネントでデータが必要な場合は、それぞれに公開可能なバインド可能なプロパティを公開することをお勧めします。子コンポーネントが親によって処理されるバブリングイベントをディスパッチさせ、バインド可能プロパティの新しい値を設定できるようにします。親から子にプロパティをバインドすると、これは他のコンポーネントに「カスケード」します。
<!-- in root application -->
<Component1 myData="{myData}"/>
あなたは追加のロジックを起動する必要がある場合は、代わりにプロパティpublic varのget/setのペアを定義し、セッターにロジックを追加することができます。
[Bindable] private var _myData;
public function set myData(value:Object):void
{
_myData = value;
doSomeLogic();
}
さらに良いことには、Flexの無効化フレームワークを使用することですパフォーマンスを最適化する:
_myDataChanged : Boolean = false;
[Bindable] private var _myData;
public function set myData(value:Object):void
{
if (_myData != value) {
_myData = value;
_myDataChanged = true;
}
invalidateProperties();
}
override protected function commitProperties() : void {
super.commitProperties();
if (_myDataChanged) {
_myDataChanged = false;
doSomeLogic()
}
}
このパターンは、Flexフレームワークを構成するすべてのUIComponentで使用されます。要素を配置するには、updateDisplayList(...)をオーバーライドする必要があります。
ああ後にしている解決策です、それは私が必要です。私はその無効化のフレームワークも好きです。 – KevMo