2014-10-18 7 views
0

저는 무한 스크롤 기능이있는 각진 앱이 있습니다. 문제는 다음과 같습니다.ngInfiniteScroll에서 스크롤이 매우 불안정합니다.

  • 페이지 중간에있는 경우 새 콘텐츠를로드하는 콜백이 트리거됩니다. 그리고 요소가 페이지에 추가 될 때 페이지가 시작될 때
  • 으로 바뀌고 새로운 콘텐츠가 추가 되더라도 스크롤은 끝까지 유지됩니다 (반면 새 콘텐츠는 이전 요소 뒤에 표시되어야 함). https://imgur.com/KMaCLuQ

    : 그것은 여기

이 스크린 캐스트입니다해야로서, 사용자가 I가 링크를 클릭하고 다음 페이지로 이동하는 경우)

  • 그것을보기 위해 스크롤해야한다, 줌은 재설정되지 않습니다

    이제 코드의 일부입니다 (게시 목록이 포함 된보기)

    당신이 더 많은 것을 원하는 경우에
    <div infinite-scroll="loadMorePosts()" infinite-scroll-distance="0"> 
    
    
        <md-card ng-repeat="post in posts"> 
         <h5 ng-bind-html="post.title"></h5> 
         <p ng-bind-html="post.body"> 
         </p> 
        </md-card> 
        <div layout="horizontal" layout-align="center"> 
    
    
        <md-progress-circular mode="indeterminate" ng-if="more"></md-progress-circular> 
    
        </div> 
    
    
    </div> 
    

    , 나는 꽤 오랫동안 ngInfiniteScroll을 사용하고 source code

  • 답변

    1

    확인해 주시기 바랍니다 그리고 나와 함께 잘 작동합니다.

    나는 당신의 코드에 뭔가 잘못되었다고 확신한다.

    일종의 잠금 시스템을 사용하여 업데이트 기능을 한 번만 호출해야합니다. 예를 들면 다음과 같습니다.

    if ($scope.loaderBusy) { 
        return; 
    } 
    
    $scope.loaderBusy = true; 
    
    User 
    .getList() 
    .then(function(response) { 
        $scope.userList = response; 
    }) 
    .finally(function() { 
        $scope.loaderBusy = false; 
    }); 
    

    또한 infinite-scroll-distance="0" 속성은 필요하지 않습니다.

    +0

    대단히 감사합니다. 더 안정적입니까? 상태가 변경되면 (예 : ui-router 사용) 스크롤을 재설정하고 하단에 도달하여 새로운 내용이 하단에 계속 추가되는 것을 방지하려면 어떻게해야합니까? – Vinz243

    +0

    코드에서 동작을 추가하여이 모든 것을 달성 할 수 있습니다. UI 라우터 해결 섹션에서 목록을 초기화하거나 컨트롤러에서 목록을 초기화하거나 서비스에 재설정 부울을 추가하는 등 여러 가지 방법이 있습니다. 두 번째 부분 귀하의 질문 중, 그것은 새로운 내용이 귀하의 화면 아래에 추가되고 당신은 아래로 스크롤해야 정상입니다. 참고 :이 모든 추가 사항은 처음 질문을 넘어서는 길입니다! –

    관련 문제