2014-10-18 68 views
0

我有一個ng-infinite滾動的角度應用程序。問題是:ngInfiniteScroll中的滾動非常不穩定

  • 當我在頁面中間加載新內容的回調被觸發。當它被觸發時,它會在元素添加到頁面時移動
  • ,並且當到達結尾時,即使添加了新內容,滾動仍然處於末尾(而新內容應顯示在舊元素之後,用戶應該有滾動才能看到)
  • 當我點擊一個鏈接,進入下一個頁面,縮放不會被重置,因爲它應該

這裏是一個截屏:https://imgur.com/KMaCLuQ

現在大家好,這是代碼的一部分(包含帖子列表的視圖)

<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> 

如果您想了解更多,可隨時檢查source code

回答

1

我一直在使用ngInfiniteScroll相當長一段時間,它工作正常我。

我很確定你的代碼有問題。

確保使用某種鎖定系統僅調用一次更新函數。這裏是一個例子:

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路由器),如何重置滾動並避免在到達底部時添加新內容並將其保留在底部? – Vinz243 2014-10-18 15:58:04

+0

您可以通過在代碼中添加這些行爲來實現所有這些......有很多方法:在UI路由器解析部分或簡單地在控制器中初始化您的列表,在服務中添加重置布爾值等。對於第二部分你的問題,這是正常的,新的內容添加到您的屏幕下方,你需要向下滾動。注意:所有這些添加都超出了最初的問題! – 2014-10-19 21:11:14