diff --git a/packages/core/data/observable/index.d.ts b/packages/core/data/observable/index.d.ts index 77c0f19ed..4cb017139 100644 --- a/packages/core/data/observable/index.d.ts +++ b/packages/core/data/observable/index.d.ts @@ -12,6 +12,13 @@ export interface EventData { object: Observable; } + +export interface NotifyData extends Partial { + 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(data: T): void; + notify(data: T): void; /** * Notifies all the registered listeners for the property change event. diff --git a/packages/core/data/observable/index.ts b/packages/core/data/observable/index.ts index 4b198d7df..64e8026ce 100644 --- a/packages/core/data/observable/index.ts +++ b/packages/core/data/observable/index.ts @@ -5,6 +5,11 @@ export interface EventData { object: Observable; } +export interface NotifyData extends Partial { + eventName: string; + object?: Observable; +} + export interface PropertyChangeData extends EventData { propertyName: string; value: any; @@ -262,16 +267,18 @@ export class Observable implements ObservableDefinition { } } - public notify(data: T): void { + public notify(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 = >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(observers: Array, data: T): void {