Я создаю мобильное приложение AIR с помощью Flash Builder 4.5. Исходное представление в моем пакете представлений - TestHomeView.mxml. Я хочу сослаться на это в одном из моих классов .as в другом месте приложения, и я не уверен, как это сделать.
Теоретически я должен иметь возможность добавить атрибут "id" в TestHomeView.mxml, но FB выдает мне ошибку: "id не разрешен в корневом теге компонента". Корневой тег - это 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;
Но он возвращается в ноль. Когда я ставлю точку останова в классе Model, она не равна нулю, но когда я пытаюсь получить к ней доступ из класса представления, она становится нулевой. Сама модель не равна нулю, но эта переменная равна.
Что я делаю не так?
Спасибо.