Aktuelle Ansicht von Modul-Instanz erstellen und wiederherstellen
Um das Plugin Aktuelle Ansicht teilen zur Verfügung zu stellen, sollen die Entwickler festlegen, wie die aktuelle Ansicht einer Modul-Instanz definiert wird und wie man aus dieser Definition die aktuelle Ansicht wiederherstellen kann.
Definition einer Ansicht im Modul
Eine Ansicht kann über eine Modul-Konfiguration, welche dem Modul bei der Initialisierung oder beim Anzeigen vom Modul (showModule) übergeben wird, beschrieben werden. Oder auch durch eine Route, welche zu der aktuellen Ansicht führt.
Damit das Plugin Aktuelle Ansicht teilen in dem Modul zur Verfügung gestellt wird, soll die Funktion getCurrentModuleState
in der Main-Klasse des Modul definiert werden.
Diese Funktion soll ein Objekt zurückgeben, welche entweder die Route zu der aktuellen Ansicht oder die Modul-Konfiguration der aktuellen Ansicht enthält.
Die Funktion und der Return-Wert kann wie folgt aussehen:
Ext.define("monitor.view.Main", {
// ..........
/**
* Function should return current state object of this module (JSON)
* Current state can consist of it's current route or current moduleCfg
* You can define, what is current state is this function
* The current state can be process in function this.updateInstance(moduleCfg, route)
* and restore the current state on client side
* @returns object {route: "", moduleCfg: {}}
*/
getCurrentModuleState : function () {
const currentState = {
moduleCfg: this.getCurrentState(),
route: this.getCurrentRoute();
};
return currentState;
},
});
|
Wiederherstellung der aktuellen Ansicht
moduleCfg
und route
sind bei der Initialisierung als Properties moduleCfg
und moduleRoute
des Moduls verfügbar.
Es bedeutet, man hat in der Funktion initComponent
in der Main-Klasse des Modul den Zugriff auf die beiden Variablen.
Bei der Aktualisierung der Route, wenn es moduleCfg
und route
in der Route vorhanden sind, sind sie als Parameter in der Funktion updateInstance(moduleCfg, route)
empfangen.
Um die aktuelle Ansicht anhand der URL wiederherzustellen, soll man moduleCfg
oder route
in der Funktion initComponent
oder updateInstance
auswerten.
Üblicherweise werden moduleCfg
oder route
in updateInstance
ausgewertet, bei der Initialisierung wird diese Funktion in der initComponent
ein mal aufgerufen.
Damit muss der Code der Auswertung zur Wiederherstellung der aktuellen Ansicht nicht wiederholt werden.
Ext.define("monitor.view.Main", {
// .........
initComponent : function () {
// .........
this.callParent();
this.updateInstance(this.moduleCfg, this.moduleRoute);
},
updateInstance : (moduleCfg, moduleRoute) {
// .........
},
/**
* Function should return current state object of this module (JSON)
* Current state can consist of it's current route or current moduleCfg
* You can define, what is current state is this function
* The current state can be process in function this.updateInstance(moduleCfg, route)
* and restore the current state on client side
* @returns object {route: "", moduleCfg: {}}
*/
getCurrentModuleState : function () {
const currentState = {
moduleCfg: this.getCurrentState(),
route: this.getCurrentRoute();
};
return currentState;
},
});