私はFlash Builder 4.5を使用してモバイルAIRアプリケーションを構築しています。ビューパッケージの初期ビューはTestHomeView.mxmlです。私は、アプリの他の場所での私の.asクラスの1つでそれを参照したいと思います。どうすればよいのか分かりません。コードのスパークビューコンポーネントを参照してください
理論上、私はTestHomeView.mxmlに "id"属性を追加することができますが、FBは私に "idはコンポーネントのルートタグには許可されていません"というエラーを表示します。ルートタグはs:viewです。
これを行う必要がある理由は、別のクラスではさまざまな計算を行い、ビュークラスのコンポーネントに値の配列を渡す必要があるからです。 、私はまたにビュークラスをインポートする必要があり、私はそれをするつもりだ場合
myViewComponent.viewArray = myArray;
:だからSomeOtherActionScriptClass.asに私が最初の配列、myarrayのを組み立てて、そのクラスに私はこれをしたいです.asクラス、それは私を奇妙なものとして襲う。だから、私が欲しいことをする簡単な方法がありますか、または配列を含むカスタムイベントをディスパッチして、それをビュークラスでリッスンする必要がありますか?
EDIT - 私はモデルで、以下のなかった以下のMVCの提案に基づいて:
[Bindable]
public class Model
{
private static var myModel:Model;//doesn't let me name it 'model' because
//I have a package named 'model'
public var myArray:Array; //its value set later in model code
public function Model()
{
if (Model.myModel != null){
throw new Error("Only one Model instance should be instantiated");
}
}
// singleton: always returns the one existing static instance to itself
public static function getInstance() : Model {
if (myModel == null){
myModel = new Model();
}
return myModel;
}
その後、私が持っているビューのコードで:
[Bindable] //do I actually need this?
private var myModel:Model = Model.getInstance();
var viewArray = new Array();
viewArray = myModel.myArray;
しかし、それは戻ってヌル来ています。 Modelクラスにブレークポイントを置くとnullではありませんが、ビュークラスからブレークポイントにアクセスしようとするとnullになります。モデル自体はnullではありませんが、その変数はnullです。
私は間違っていますか?
ありがとうございました。
Paul - 助けてくれてありがとう。私はテストするためのシンプルなアプリケーションを作成し、あなたのコードが動作します!親アプリケーションは、それを呼び出すクラスがUIComponentである(または継承している)限り、機能します。私の元の問題はまだ残っていますが、何とか私の配列をnullにリセットしているコードで何か他のことが起こっていることを意味するはずです。私はそれを狩る必要があります。 – David
あなたのコードでは、配列を初期化する場所は表示されません。 var myArray:Array = ["AS3"、 "Flex"]; –