2009-08-19 6 views
0

私はいくつかのアイテム(キャンバス、ラベルなど)を組み合わせたコンポーネントを開発しましたが、{stationXML.getItemAt(1).AAA @値}、それは動作しません。コンポーネントのすべてのアイテムを結合する前に、それらはすべてメインのMXMLファイルに入っていました。コンポーネント内のグローバル変数にどのようにバインドできますか?

"stationXML" arraycollection変数が重要であるかどうかはわかりませんが、 "Station.as"ファイル内で宣言されています。

アイデア?

答えて

1

"グローバル変数"とはどこでどのように宣言されていますか?実際、Flexアプリケーションにはグローバル変数のようなものはありません。メインMXMLクラスで、グローバルにしないものを宣言すると、そのメインアプリケーションクラスのインスタンスからアクセスできるようになります。コンポーネント内のその値にアクセスする場合は、そのコンポーネントに渡す必要があります。あるいは、シングルトンクラスを実装して、それらの値への「グローバル」アクセスを効果的に提供することもできます。


例えば、コンポーネントで、パブリックプロパティを作成:値を下に渡し、メインMXMLで、その後

public var xmlData:XML; 

を:

<xxx:MyComponent id="foo" x="10" xmlData="{theValue}"/> 
+0

私の誤った記述には申し訳ありません。項目は、Station.asファイル内の「パブリック」変数(バインド可能)として宣言されています。その値をそのコンポーネントにどのように渡すのですか? – Seidleroni

+0

外部のものが「設定」できるコンポーネント上のパブリックプロパティを定義します。次に、そのプロパティをメインのmxmlから設定します。上記の私の編集を参照してください。 – Marplesoft

+0

ありがとう、これは完璧に機能しました!唯一の変更は、コンポーネント内で変数(xmlData)をバインド可能にする必要があることでした。しかし、1つの質問。アプリケーションは、コンポーネント内にまったく新しいXML変数を作成します(本質的に同じアイテムによって占められるメモリを倍増させる)か、ポインタのようなものでしょうか? – Seidleroni

0

Station.asはEventDispatcherを拡張し、クラス(またはプロパティ)は[Bindable]メタデータタグを持ちますか?バインドするには、継承構造でEventDispatcherを拡張して、バインディングされた「クライアント」に更新したことを通知できるようにする必要があります。

+0

Station.asは、EventDispatcherを拡張しません。 。どうすればいいのですか?それは何ですか?項目は次のようなバインド可能として宣言されています。 [バインド可能] public var stationXML:ArrayCollection = new ArrayCollection; – Seidleroni

関連する問題