【问题标题】:Ionic/AngularJS Infinite scroll without call load moreIonic/AngularJS 无限滚动,无需调用加载更多
【发布时间】:2015-11-08 23:05:27
【问题描述】:

我想实现无限滚动,但每次都不需要调用加载更多函数。

假设我从 Parse 下载了一个包含 1000 个项目的数组。我想显示 10 个项目,然后使用本地数组中的 ng-repeat 将越来越多的项目添加到我的列表中。

我认为最好的解决方案是实现一个指令,但也许已经做了一些事情......

有人吗?

【问题讨论】:

    标签: angularjs ionic-framework angularjs-ng-repeat infinite-scroll


    【解决方案1】:

    当然,您可以将其作为指令执行,但无论如何,您将需要某种loadMore 函数。换句话说,您需要检测用户何时滚动到特定位置,并执行一些更新功能。

    虽然您自己的指令可能更好地封装您的特定要求,但您可以使用任何其他当前无限滚动插件来实现您想要的。只需在模型中保留两个版本的数组。一个是数据,另一个是用户看到的数据。如果您的数组是对象,那么两者都应该能够处理相同的项目。

    例如:

    var data = [...];
    var position = 0;
    var pageSize = 10;
    $scope.viewable = [];
    
    $scope.loadMore = function(){
        $scope.viewable = $scope.viewable.concat(data.slice(position, position + pageSize));
        position += pageSize;
    };
    

    更新:

    如果这是你需要经常实现的东西,但又不想实现你自己的滚动相关指令,你可以将上面的想法封装在一个管理多版本数组的工厂中。您仍然需要挂钩loadMore,并设置多版本,但您的控制器和视图代码如下所示:

    // the data you loaded somewhere
    var data = [...];
    $scope.specialArray = PageableArrayFactory.create(data);
    
    // then in your html
    ng-repeat="item in specialArray.viewItems"
    // where you put your infinite scroll
    infinite-scroll="specialArray.loadMore()"
    

    PageableArrayFactory 只需要成为一个接收大数据数组的工厂,并像我最初的示例一样跟踪可查看的副本数组。实现起来应该不会太难,然后可以在加载数据后通过任何控制器中的一行代码重复使用。


    另一个例子:

    您还可以在$index 上构建自定义过滤器(或使用ng-show/if),以便ng-repeat 仅显示您想要的项目。你仍然需要挂钩 loadMore() 虽然如果你想使用现有的无限滚动代码,这意味着你仍然需要我的工厂示例。

    【讨论】:

    • 我了解您的解决方案,但我有 5/6 个控制器,我一直觉得很难为我的应用程序中的每个控制器/列表实现这一点...:-(
    • 那么在这种情况下,您可以将我的想法包含在您自己的指令中,但是您需要实现与滚动相关的代码。或者,我更新了我的答案以提供一种可重用的方法,您仍然可以使用现有的无限滚动插件。
    • 好多了,但还是不行:-(
    • 我觉得我们可以找到更好的东西
    • 更好是主观的。我所有的建议都是有效的例子。您如何改进您的问题,使其更加黑白分明,这样您就不会浪费人们试图帮助您的时间。
    【解决方案2】:

    Matt 的解决方案非常好。特别是考虑到您已经提到要使用 ng-repeat 并且要对结果进行分页。

    执行他的建议似乎不是很大的努力。另一种选择是使用collection-repeat,尤其是performances

    实现很简单:

    <ion-content>
      <ion-item collection-repeat="item in items">
        {{item}}
      </ion-item>
    </ion-content>
    

    您不必担心将所有项目一起加载,因为框架将负责为您加载大量信息。 据我所知,唯一的缺点是您无法控制要显示的项目数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      相关资源
      最近更新 更多