From 1d0dbab8bd585e493df05b385c9239a9ea5836e3 Mon Sep 17 00:00:00 2001 From: Christopher Garrett Date: Mon, 10 Sep 2018 15:03:59 -0700 Subject: [PATCH] always flatten listeners --- packages/@ember/-internals/meta/lib/meta.ts | 27 ++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/packages/@ember/-internals/meta/lib/meta.ts b/packages/@ember/-internals/meta/lib/meta.ts index 4d5d51474fb..84c9c4f376b 100644 --- a/packages/@ember/-internals/meta/lib/meta.ts +++ b/packages/@ember/-internals/meta/lib/meta.ts @@ -521,26 +521,25 @@ export class Meta { } matchingListeners(event: string) { - let pointer: Meta | null = this; // fix type let result: any[] | undefined; - while (pointer !== null) { - let listeners = pointer._listeners; - if (listeners !== undefined) { - for (let index = 0; index < listeners.length; index++) { - let listener = listeners[index]; - if (listener.event === event) { - result = result || []; - pushUniqueListener(result, listener); - } + if (!this._listenersFinalized) { + this._finalizeListeners(); + } + + let listeners = this._listeners; + if (listeners !== undefined) { + for (let index = 0; index < listeners.length; index++) { + let listener = listeners[index]; + + if (listener.event === event) { + result = result || []; + pushUniqueListener(result, listener); } } - if (pointer._listenersFinalized) { - break; - } - pointer = pointer.parent; } + return result; } }