Verwendung mehrerer Controller mit ExtJS 4 MVC

8

Nehmen wir an, ich habe einen Hauptcontroller, dann hat meine Anwendung einen Controller für jedes "Modul". Dieser Hauptcontroller enthält das Ansichtsfenster, dann einen Header (mit einem Menü) + einen "zentrierten" Container, der am Anfang leer ist.

Ein Klick im Menü ändert das aktuelle Modul / Controller und die Adhoc-Ansicht (die zu diesem Controller gehört) wird im zentrierten Container angezeigt.

Ich denke, es ist ein sehr einfaches Szenario, aber seltsamerweise habe ich den richtigen Weg nicht gefunden. Irgendwelche Ideen? Vielen Dank!

    
TigrouMeow 04.10.2011, 08:33
quelle

2 Antworten

9

Hier ist, was ich tue: Ich habe eine Symbolleiste oben, eine linke Navigation und die zentrale Position ist Arbeitsbereich (im Grunde eine Registerkarte) wie du erwähnt. Lassen Sie uns jeden Teil der Anwendung nehmen und erklären. Zuerst sieht mein Ansichtsfenster wie folgt aus:

%Vor%

Sie können sehen, dass ich eine Symbolleiste (App.view.menu.Toolbar) mit Menü und linker Navigation (App.view.menu.NavigationPane) habe. Diese beiden Komponenten bilden mein Hauptmenü oder Gateway zu anderen Modulen. Benutzer wählen den Menüeintrag und die entsprechenden Modulansichten (wie Formular, Raster, Diagramme usw.) werden in die "Mittelscheibe" geladen. Die Centerpane ist nichts anderes als eine abgeleitete Klasse von Ext.tab.Panel.

Wie Sie bereits gesagt haben, habe ich einen Hauptcontroller, der alle Anforderungen aus der Symbolleiste und dem Navigationsbereich behandelt. Es wurden nur die Klickaktionen der Symbolleiste und des Navigationsbereichs behandelt. Hier ist mein AppController:

%Vor%

Sehen Sie sich einen der Handler meiner Schaltfläche an. Ich erhalte den Controller über die Eigenschaft 'application':

%Vor%

Mit Hilfe der getController-Methode erhalte ich die Instanz des Controllers und rufe dann jede Methode in meinem Controller auf. Schauen wir uns nun das Skelett des Controllers meines Moduls an:

%Vor%

Der Controller meines Moduls hat nur die Aktionen, die zu diesem Modul gehören (das Raster eines Moduls, Formulare usw.). Dies sollte Ihnen helfen, mit der richtigen Richtung zu beginnen.

    
Abdel Raoof 04.10.2011, 10:41
quelle
1

Fügen Sie im Hauptcontroller den untergeordneten Controller im Click-Ereignishandler des Menüs

hinzu %Vor%

Fügen Sie in der Startfunktion dem Controller ein Listener-Ereignis wie folgt hinzu -

%Vor%

Fügen Sie nun den Code für das dynamische Einbetten von Ansichten in das Ansichtsfenster in der init-Methode von ChildController ein.

%Vor%

HTH:)

    
techknowfreak 04.10.2011 14:41
quelle

Tags und Links