InfiniteScroll bug or problem


#1

Im getting errors in any page im using InfiniteScroll

This is the error that ionic is giving me

Uncaught TypeError: Cannot read property 'timeStamp' of null
    at InfiniteScroll._onScroll (main.js:61600)
    at SafeSubscriber.schedulerFn [as _next] (main.js:4216)
    at SafeSubscriber.__tryOrUnsub (main.js:43527)
    at SafeSubscriber.next (main.js:43474)
    at Subscriber._next (main.js:43414)
    at Subscriber.next (main.js:43378)
    at EventEmitterProxy.Subject.next (main.js:47145)
    at EventEmitterProxy.EventEmitter.emit (main.js:4190)
    at ScrollView.scroll.onScroll (main.js:38559)
    at ScrollView.setScrolling (main.js:95286)

Current Ionic Info

global packages:

    @ionic/cli-utils : 1.4.0
    Cordova CLI      : 7.0.1
    Ionic CLI        : 3.4.0

local packages:

    @ionic/app-scripts : 1.3.7
    Cordova Platforms  : android 6.2.3
    Ionic Framework    : ionic-angular 3.4.2

System:

    Node       : v6.10.2
    OS         : Windows 10
    Xcode      : not installed
    ios-deploy : not installed
    ios-sim    : not installed
    npm        : 3.10.10

Scroll to top throwing unexpected error
#2

What is the code you are trying to use?


#3

@agrupalo
that the bug actually when you add scrolltotop() in infinite scroll.I am also facing the same issue


#4

Here is a Github issue about this:


Add your +1

There might also be a solution.


#5

thanks @Sujan12 for your help. But its very hard to find a solution . Is there any alternative for scrollToTop().Cant spend much time on this has been sitting over it for more than 3 days. If someone could then it will be a great!!!


#6

There are multiple PRs at https://github.com/ionic-team/ionic/pulls for InfiniteScroll - maybe one fixes this.


#7

The error is due to:

 if (this._lastCheck + 32 > ev.timeStamp) {
            // no need to check less than every XXms
            return 2;
        }
        this._lastCheck = ev.timeStamp;

You can fix it by changing this part of the code in your node_modules, but ofcourse that is not a good solution.

I fixed it via a setTimeout():

  scrollToTopEnabled: boolean = true;

  scrollToTop() {
    if(this.scrollToTopEnabled) {
      this.scrollToTopEnabled = false;
      this.content.scrollToTop()

      setTimeout(() => {
        this.scrollToTopEnabled = true;
      }, 500)
    }
  }

This way the function can never be called within 32 milliseconds and the error will not be fired again