Какой лучший способ обмена данными между компонентами во Flex?
У меня есть приложение Flex, над которым я работаю для новой работы. Это своего рода приложение для тренировочных колес - я изучаю язык, и это не приложение, которому нужно разговаривать со службой, чтобы выполнять свою работу. В приложении есть несколько экземпляров комбинированных полей, которые используют один и тот же набор возможных значений (скажем, набор состояний: "Выполняется", "Отклонено", "Завершено"), и я хочу использовать один и тот же источник данных.,
Каков наилучший способ справиться с этим?
2 ответа
Архитектура MVC.... ну в простых случаях только часть модели:
package
{
[Bindable]
public final class ShellModelSingleton
{
public var selectedStatus:ArrayCollection;
////////////////////////////////////////////
// CONSTRUCTOR
// ****DO NOT MODIFY BELOW THIS LINE*******
///////////////////////////////////////////
public function ShellModelSingleton(){}
/****************************************************************
* Singleton logic - this makes sure only 1 instance is created
* Note: you are able to hack this since the constructor doesn't limit
* a single instance
* so make sure the getInstance function is used instead of new
* ShellModelSingleton()
*****************************************************************/
public static function getInstance():ShellModelSingleton {
if(_instance == null) {
_instance = new ShellModelSingleton();
}
return _instance;
}
protected static var _instance:ShellModelSingleton;
}
}
Затем вы можете обновить и использовать синглтон из любого компонента, подобного этому:
[Bindable] private var model:ShellModelSingleton =
ShellModelSingleton.getInstance();
Компонент 1
<mx:DataGrid id="myDG" dataProvider="{model.selectedStatus}" />
Компонент 2
<mx:List id="myList" dataProvider="{model.selectedStatus}"
labelField="label" />
Затем любые изменения, внесенные в коллекцию selectedStatus, будут обновлены в обоих компонентах.
Просто инициализируйте их в массив нашего родительского компонента.