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.

System-Funktionen 1:

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.

System-Funktionen 2:

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.

System-Funktionen 3:

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.

System-Funktionen 4:

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.

System-Funktionen 5:

Diese Funktion kann auch explizit aufgerufen werden (z. B. bei der Zerstörung von Child-Controls).