watchEventRegistration
[ Funktion ]
public static watchEventRegistration(
name: string,
callback: (data: EventProvider.IEventRegResultObject) => void
): DestroyFunction
Überwacht einen Event-Namen auf Registrierungs-Ereignisse und löst den zugehörigen Callback aus, wenn eine Registrierung stattfindet um z. B. auf event-spezifische Registrierungsoptionen (siehe register) reagieren zu können.
Parameter
Name | Typ | Beschreibung |
---|---|---|
name | Name des Events | |
callback | data: EventProvider.IEventRegResultObject) => void | Callback mit Informationen über das Event-Registrierungs-Ereignis. |
Rückgabewert
Typ | Beschreibung |
---|---|
Meldet die Event-Registrierungs-Überwachung ab und gibt alle zugehörigen Resourcen frei, wenn aufgerufen. |
Verfügbar ab Version 1.10 |
Beispiel – JavaScript 1
TcHmi.EventProvider.watchEventRegistration('MyEvent', function (data) {
if (data.error === TcHmi.Errors.NONE) {
switch (data.type) {
case TcHmi.EventProvider.EventRegWatchType.REGISTER:
{
// Event registration
console.log(data);
}
break;
case TcHmi.EventProvider.EventRegWatchType.DESTROY:
{
// Event destroy
console.log(data);
}
break;
}
}
});
var e1 = TcHmi.EventProvider.register('MyEvent', function () { }, { myOption: true });
var e2 = TcHmi.EventProvider.register('MyEvent', function () { });
e2();
e1();
Beispiel – JavaScript 2
Auszug aus der Control-Klasse TcHmi.Controls.System.TcHmiControl als Implementierungsbeispiel anhand des Events [Id].onMouseDown.
Die Klasse TcHmi.Controls.System.TcHmiControl überwacht das HMI-Event [Id].onMouseDown auf Registrierungsereignisse um dem Anwender die Möglichkeit zu bieten, pro Registrierung unterschiedliche Optionen zu verwenden.
Alle HMI-Events auf der Ebene TcHmi.Controls.System.TcHmiControl, die auf DOM-Events basieren, erlauben z.B. die DOM-Event Eigenschaften passive (boolean) und capture (boolean) bei der Registrierung zu aktivieren bzw. deaktivieren.
Über die Konstante TCHMI_EVENT_OPTION_OBJECT_SUPPORTED wird ermittelt, ob der Browser eine aktuelle addEventListener API unterstützt oder ob man auf die Option capture (boolean) beschränkt ist.
//...
function TcHmiControl(element, pcElement, attrs) {
//...
_this.__resourcesDomEventRegWatchOnMouseDown = {};
//...
}
TcHmiControl.prototype.__attach = function () {
//...
__this.__destroyDomEventRegWatchOnMouseDown = TcHmi.EventProvider.watchEventRegistration(this.getId() + '.onMouseDown', function (data) {
if (data.error === TcHmi.Errors.NONE) {
switch (data.type) {
case TcHmi.EventProvider.EventRegWatchType.REGISTER:
{
__this.__resourcesDomEventRegWatchOnMouseDown[data.event.id] = {
event: data.event,
domEventListener: {
eventName: 'mousedown',
listener: __this.__onElementMouseDown.call(__this, data.event),
options: TCHMI_EVENT_OPTION_OBJECT_SUPPORTED ? (
data.event.options ? data.event.options : { passive: false, capture: false }
) : (
(data.event.options && data.event.options.capture) ? data.event.options.capture : false
)
}
};
var list = __this.__resourcesDomEventRegWatchOnMouseDown[data.event.id].domEventListener;
__this.getElement()[0].addEventListener(list.eventName, list.listener, list.options);
}
break;
case TcHmi.EventProvider.EventRegWatchType.DESTROY:
{
var list = __this.__resourcesDomEventRegWatchOnMouseDown[data.event.id].domEventListener;
__this.getElement()[0].removeEventListener(list.eventName, list.listener, list.options);
}
break;
}
}
});
//...
};
TcHmiControl.prototype.__detach = function () {
//...
for (var key in this.__resourcesDomEventRegWatchOnMouseDown) {
var list = this.__resourcesDomEventRegWatchOnMouseDown[key].domEventListener;
this.__element[0].removeEventListener(list.eventName, list.listener, list.options);
}
//...
if (this.__destroyDomEventRegWatchOnMouseDown) {
this.__destroyDomEventRegWatchOnMouseDown();
this.__destroyDomEventRegWatchOnMouseDown = null;
}
//...
};
TcHmiControl.prototype.__onElementMouseDown = function (event) {
var _this = this;
return function (e) {
//...
TcHmi.EventProvider.raiseEx(event, e);
//...
};
};
//...