System-Funktionen
Framework-Controls verfügen über Funktionen, die zu unterschiedlichen Zeiten vom System aufgerufen werden. Jede System-Funktion ruft über das „super“-Objekt die jeweilige System-Funktion der Basis-Klasse (TcHmiControl) auf.
PrevInit-Funktion
TypeScript:
protected __elementTemplateRoot!: JQuery;
public __previnit() {
/** Handle template elements. Should be done before call to __previnit of super class. */
this.__elementTemplateRoot = this.getElement().find('.TcHmi_Controls_FrameworkPrj1_FrameworkControlJs1-Template');
/** Call __previnit of super class. */
super.__previnit();
}
Werden Variablen (wie __elementTemplateRoot
) im PrevInit mit dem endgültigen Wert beschrieben werden, so benötigen diese als Typ nicht zusätzlich undefined
. Hier reicht der Typ JQuery
aus. Um TypeScript mitzuteilen, dass diese Variablen trotzdem nicht uninitialisiert genutzt werden, muss der Definite Assignment Assertion operator mit dem Ausrufezeichen verwendet werden.
JavaScript:
__previnit() {
/** Handle template elements. Should be done before call to __previnit of super class. */
this.__elementTemplateRoot = this.getElement().find('.TcHmi_Controls_FrameworkPrj1_FrameworkControlJs1-Template');
/** Call __previnit of super class. */
super.__previnit();
}
Die PrevInit-Funktion wird automatisch nach dem Aufruf des Konstruktors durch das System aufgerufen, bevor die Attribut-Setter der einzelnen Attribute aufgerufen werden. Dementsprechend haben die Member-Variablen der Attribute bei dem Aufruf der PrevInit-Funktion den Wert „undefined“. Innerhalb der PrevInit-Funktion werden die Referenzen zu den HMTL-Elementen aus der Template.html-Datei erstellt.
Diese Funktion darf ausschließlich durch das System und nicht explizit durch den Entwickler aufgerufen werden. |
Init-Funktion
TypeScript:
public __init() {
super.__init();
}
JavaScript:
__init() {
super.__init();
}
Die Init-Funktion wird automatisch durch das System aufgerufen, nachdem die Attribut-Setter der einzelnen Attribute aufgerufen wurden. Dementsprechend haben die Member-Variablen der Attribute bei dem Aufruf der Init-Funktion bereits die Werte, welche dem Control übergeben oder intern als Default-Wert festgelegt wurden.
Diese Funktion darf ausschließlich durch das System und nicht explizit durch den Entwickler aufgerufen werden. |
Attach-Funktion
TypeScript:
public __attach() {
/**
* Enable everything which was disabled while __detach function was called!
*/
/**
* Initialize everything which is only available while the control is part of the active dom.
*/
/** Call base __attach function */
super.__attach();
}
JavaScript:
__attach() {
/**
* Enable everything which was disabled while __detach function was called!
*/
/**
* Initialize everything which is only available while the control is part of the active dom.
*/
/** Call base __attach function */
super.__attach();
}
Die Attach-Funktion wird automatisch durch das System aufgerufen, nachdem die aktuelle Control-Instanz zu dem DOM des HTML-Dokumentes hinzugefügt wurde. Innerhalb der Attach-Funktion sollen alle Berechnungen durchgeführt werden, die nur zur Verfügung stehen, während sich die Control-Instanz im DOM befindet (z. B. .getBoundingClientRect() von DOM-Elementen oder .width() von jQuery-Elementen). Der Gegensatz zur Attach-Funktion ist die Detach-Funktion.
Diese Funktion darf ausschließlich durch das System und nicht explizit durch den Entwickler aufgerufen werden. |
Detach-Funktion
TypeScript:
public __detach() {
/**
* Disable everything which is not needed while the control is not part of the active dom.
* No need to listen to events for example!
*/
/** Call base __detach function */
super.__detach();
}
JavaScript:
__detach() {
/**
* Disable everything which is not needed while the control is not part of the active dom.
* No need to listen to events for example!
*/
/** Call base __detach function */
super.__detach();
}
Die Detach-Funktion wird automatisch durch das System aufgerufen, nachdem die aktuelle Control-Instanz aus dem DOM des HTML-Dokumentes entfernt wurde. In der Detach-Funktion sollen alle Funktionen deaktiviert werden, die nicht mehr benötigt werden, nachdem die Control-Instanz aus dem DOM entfernt wurde. Der Gegensatz zur Detach-Funktion ist die Attach-Funktion.
Diese Funktion darf ausschließlich durch das System und nicht explizit durch den Entwickler aufgerufen werden. |
Destroy-Funktion
TypeScript:
public destroy() {
if (this.__keepAlive) {
return;
}
/**
* Free resources
*/
/** Call base __destroy function */
super.destroy();
}
JavaScript:
destroy() {
if (this.__keepAlive) {
return;
}
/**
* Free resources like events etc.
*/
/** Call base __destroy function */
super.destroy();
}
Die Destroy-Funktion wird automatisch durch das System aufgerufen, nachdem die Control-Instanz nicht mehr benutzt wird (nach Detach-Funktion). Befindet sich das Control auf einer HTML-Seite, wo „Preload Partial“ aktiviert ist, wird die Destroy-Funktion nicht aufgerufen, da die Seite im Cache des Browsers weiterhin gespeichert wird. Innerhalb der Destroy-Funktion sollen die Elemente zerstört werden, die während der Laufzeit erzeugt worden sind.
Diese Funktion kann auch explizit aufgerufen werden (z. B. bei der Zerstörung von Child-Controls). |