2014-10-18 41 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