Open
Conversation
Collaborator
|
@leozhucong hey there, please include tests for this change. |
matthewborgman
added a commit
to VouchLabs/ngInfiniteScroll
that referenced
this pull request
Sep 8, 2016
21036ac to
79473ca
Compare
|
@graingert @sroze - Any idea when this will be merged? Running into this issue. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The problem has been stated in issue #186 , I found out the infinite loop will occur when using AJAX calls to retrieve data which normally requires the use of
infinite-scroll-disabled. When its value switches from true to false, it will trigger scroll function again ifcheckWhenEnabledis true.handleInfiniteScrollDisabled = (v) -> scrollEnabled = !v if scrollEnabled && checkWhenEnabled checkWhenEnabled = false handler()In the handler() function:
if shouldScroll checkWhenEnabled = true if scrollEnabled if scope.$$phase || $rootScope.$$phase scope.infiniteScroll() else scope.$apply(scope.infiniteScroll) else checkWhenEnabled = falseif shouldScroll is always true (when scroll to then end), then checkWhenEnabled is also always true. When we toggle
infinite-scroll-disabledin our infinite scroll function, 'handler()' will be constantly triggered byhandleInfiniteScrollDisabled()causing infinite scroll function jumps into infinite loop.I think
checkWhenEnabledshould be set back to false if the infinite scroll function is able to be triggered inhandler()so there is no need forhandleInfiniteScrollDisabledto trigger it again:if shouldScroll checkWhenEnabled = true if scrollEnabled checkWhenEnabled = false if scope.$$phase || $rootScope.$$phase scope.infiniteScroll() else scope.$apply(scope.infiniteScroll) else checkWhenEnabled = falseIt works for me.