fix(core): notify object now optional (#9032)

This commit is contained in:
Martin Guillon
2020-11-16 06:57:58 +01:00
committed by GitHub
parent 023be8cbf1
commit 539fd1eb29
2 changed files with 19 additions and 5 deletions

View File

@ -12,6 +12,13 @@ export interface EventData {
object: Observable;
}
export interface NotifyData extends Partial<EventData> {
eventName: string;
object?: Observable;
}
/**
* Data for the "propertyChange" event.
*/
@ -136,7 +143,7 @@ export class Observable {
* Notifies all the registered listeners for the event provided in the data.eventName.
* @param data The data associated with the event.
*/
notify<T extends EventData>(data: T): void;
notify<T extends NotifyData>(data: T): void;
/**
* Notifies all the registered listeners for the property change event.

View File

@ -5,6 +5,11 @@ export interface EventData {
object: Observable;
}
export interface NotifyData extends Partial<EventData> {
eventName: string;
object?: Observable;
}
export interface PropertyChangeData extends EventData {
propertyName: string;
value: any;
@ -262,16 +267,18 @@ export class Observable implements ObservableDefinition {
}
}
public notify<T extends EventData>(data: T): void {
public notify<T extends NotifyData>(data: T): void {
const eventData = data as EventData;
eventData.object = eventData.object || this;
const eventClass = this.constructor.name;
this._globalNotify(eventClass, 'First', data);
this._globalNotify(eventClass, 'First', eventData);
const observers = <Array<ListenerEntry>>this._observers[data.eventName];
if (observers) {
Observable._handleEvent(observers, data);
Observable._handleEvent(observers, eventData);
}
this._globalNotify(eventClass, '', data);
this._globalNotify(eventClass, '', eventData);
}
private static _handleEvent<T extends EventData>(observers: Array<ListenerEntry>, data: T): void {