Какой лучший способ обмена данными между компонентами во 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, будут обновлены в обоих компонентах.

Просто инициализируйте их в массив нашего родительского компонента.

Другие вопросы по тегам