【发布时间】:2011-11-12 16:08:19
【问题描述】:
我正在使用 Flash Builder 4.5 构建一个移动 AIR 应用程序。我的视图包中的初始视图是 TestHomeView.mxml。我想在应用程序其他地方的一个 .as 类中引用它,但我不知道该怎么做。
理论上我应该能够向 TestHomeView.mxml 添加一个“id”属性,但 FB 给我一个错误:“id is not allowed on the root tag of a component”。根标签是 s:view。
我需要这样做的原因是在另一个类中我进行了各种计算,然后需要将一组值传递给我的视图类中的组件。所以在 SomeOtherActionScriptClass.as 我首先组装数组 myArray,然后在那个类中我想这样做:
myViewComponent.viewArray = myArray;
如果我要这样做,我还需要将视图类导入 .as 类,这让我觉得很奇怪。那么有没有一种简单的方法来做我想做的事,还是我必须调度一个包含数组的自定义事件,并在视图类中监听它?
编辑 - 基于以下 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;
但它会返回 null。当我在 Model 类中放置断点时它不为空,但当我尝试从视图类访问它时,它为空。模型本身不为空,但该变量为空。
我做错了什么?
谢谢。
【问题讨论】:
标签: actionscript-3 apache-flex flash-builder mxml