mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-14 18:12:09 +08:00
fix(core): notify object now optional (#9032)
This commit is contained in:
9
packages/core/data/observable/index.d.ts
vendored
9
packages/core/data/observable/index.d.ts
vendored
@ -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.
|
||||
|
@ -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 {
|
||||
|
Reference in New Issue
Block a user