2009-07-09 5 views
2

Ich habe eine Flex-Anwendung, an der ich für einen neuen Job arbeite. Es ist eine Art Training Wheels-Anwendung - ich lerne die Sprache, und dies ist keine App, die mit einem Service sprechen muss, um seine Arbeit zu erledigen. Es gibt einige Instanzen von Kombinationsfeldern in der gesamten Anwendung, die denselben Satz möglicher Werte teilen (z. B. eine Auswahl von Zuständen: "In Bearbeitung", "Abgelehnt", "Abgeschlossen"), die dieselbe Datenquelle verwenden soll .Was ist der beste Weg, Daten zwischen Komponenten in Flex zu teilen?

Was ist der beste Weg, dies zu verwalten?

Antwort

3

MVC-Architektur .... gut in einfachen Fällen nur das Modell Teil:

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

} 

Dann können Sie die Singleton von jeder Komponente wie diese aktualisieren und verwenden:

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

Komponente 1

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

Komponente 2

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

Anschließend werden alle Änderungen, die Sie an der ausgewähltenStatus-Auflistung vornehmen, in beiden Komponenten aktualisiert.

0

Initialisieren Sie sie einfach zu einem Array in unserer übergeordneten Komponente.

+0

Angenommen, sie haben nicht alle eine gemeinsame Mutterkomponente? –

+0

Ich meinte Elternkomponente wie in Ihrer Anwendungskomponente. Dort deklarierte Variablen haben im Wesentlichen einen globalen Geltungsbereich. – CookieOfFortune

Verwandte Themen