【问题标题】:Scrolling is very unstable in ngInfiniteScrollngInfiniteScroll 中的滚动非常不稳定
【发布时间】:2014-10-18 22:17:23
【问题描述】:

我有一个带有 ng-infinite 滚动的 Angular 应用程序。问题是:

  • 当我在页面中间时,会触发加载新内容的回调。当它被触发时,它会发生变化
  • 当元素被添加到页面并且到达末尾时,即使添加了新内容,滚动也会保持在末尾(而新内容应该出现在旧元素之后,并且用户应该滚动看到它)
  • 当我单击链接并转到下一页时,缩放没有按原样重置

这是一个截屏视频: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

【问题讨论】:

    标签: javascript angularjs infinite-scroll nginfinitescroll


    【解决方案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"也不是必须的。

    【讨论】:

    • 非常感谢。现在更稳定了。如何在状态更改时重置滚动(我正在使用 ui-router)并避免当到达底部并添加新内容时它会停留在底部?
    • 您可以通过在代码中添加这些行为来实现所有这些...有很多方法:在 UI 路由器解析部分或简单地在控制器中初始化您的列表,在您的服务等。对于您问题的第二部分,新内容添加到您的屏幕下方是正常的,您需要向下滚动。注意:所有这些添加都超出了最初的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多