From 2c209353e53634d7748b354dc101d5c3f6b2b4ed Mon Sep 17 00:00:00 2001 From: Jake Barnes Date: Thu, 30 Apr 2020 11:37:50 +1000 Subject: [PATCH] Keep listening for infinityModel changes after hiding --- addon/components/infinity-loader.js | 38 ++++++++++--------- .../templates/components/infinity-loader.hbs | 1 - 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/addon/components/infinity-loader.js b/addon/components/infinity-loader.js index c4e3ce8b..caf92e62 100644 --- a/addon/components/infinity-loader.js +++ b/addon/components/infinity-loader.js @@ -80,6 +80,20 @@ const InfinityLoaderComponent = Component.extend({ return 'infinity-loader '.concat(this.classNames).trim(); }), + init() { + this._super(...arguments); + + defineProperty(this, 'infinityModelContent', computed('infinityModel', function() { + return Promise.resolve(this.infinityModel); + })); + + this.addObserver('infinityModel', this, this._initialInfinityModelSetup); + this._initialInfinityModelSetup(); + + this.addObserver('hideOnInfinity', this, this._loadStatusDidChange); + this.addObserver('reachedInfinity', this, this._loadStatusDidChange); + }, + /** * setup ember-in-viewport properties * @@ -99,16 +113,6 @@ const InfinityLoaderComponent = Component.extend({ instance.elem = element; - defineProperty(instance, 'infinityModelContent', computed('infinityModel', function() { - return Promise.resolve(instance.infinityModel); - })); - - instance.addObserver('infinityModel', instance, instance._initialInfinityModelSetup); - instance._initialInfinityModelSetup(); - - instance.addObserver('hideOnInfinity', instance, instance._loadStatusDidChange); - instance.addObserver('reachedInfinity', instance, instance._loadStatusDidChange); - let options = { viewportSpy: true, viewportTolerance: { @@ -125,17 +129,17 @@ const InfinityLoaderComponent = Component.extend({ onExit(instance.didExitViewport.bind(instance)); }, - willDestroyLoader(_element, [instance]) { - instance._cancelTimers(); + willDestroy() { + this._cancelTimers(); - get(instance, 'infinityModelContent') + get(this, 'infinityModelContent') .then((infinityModel) => { - infinityModel.off('infinityModelLoaded', instance, instance._loadStatusDidChange.bind(instance)); + infinityModel.off('infinityModelLoaded', this, this._loadStatusDidChange.bind(this)); }); - instance.removeObserver('infinityModel', instance, instance._initialInfinityModelSetup); - instance.removeObserver('hideOnInfinity', instance, instance._loadStatusDidChange); - instance.removeObserver('reachedInfinity', instance, instance._loadStatusDidChange); + this.removeObserver('infinityModel', this, this._initialInfinityModelSetup); + this.removeObserver('hideOnInfinity', this, this._loadStatusDidChange); + this.removeObserver('reachedInfinity', this, this._loadStatusDidChange); }, /** diff --git a/addon/templates/components/infinity-loader.hbs b/addon/templates/components/infinity-loader.hbs index 87808b6b..b0c2e818 100644 --- a/addon/templates/components/infinity-loader.hbs +++ b/addon/templates/components/infinity-loader.hbs @@ -1,7 +1,6 @@ {{#if this.isVisible}}