tags:

views:

304

answers:

2

I have a Flex application that I'm working on for a new job. It's sort of a training wheels application -- I'm learning the language, and this isn't an app that needs to talk to a service in order to do its job. There are a few instances of combo boxes throughout the application that share the same set of possible values (say, a selection of states: "In Progress", "Rejected", "Complete") that I want to have use the same data source.

What is the best way to manage this?

A: 

Just initialize them to an array in our parent component.

CookieOfFortune
Suppose that they don't all share a common parent component?
Chris R
I meant parent component as in your application component. Variables declared in there essentially have global scope.
CookieOfFortune
+3  A: 

MVC architecture ....well in simple cases just the Model part:

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;
    }

}

Then you can update and use the singleton from any component like this:

[Bindable] private var model:ShellModelSingleton = 
                              ShellModelSingleton.getInstance();

Component 1

<mx:DataGrid id="myDG" dataProvider="{model.selectedStatus}" />

Component 2

   <mx:List id="myList" dataProvider="{model.selectedStatus}" 
      labelField="label" />

Then any changes you make to the selectedStatus collection will be updated in both components.

Shua