javascript - ng-if 的无限滚动会扰乱 ng-repeat 中的顺序

标签 javascript angularjs ionic-framework

我正在使用 ng-repeat 来获取一些列表项。这样可行。我也根据字母表对它们进行排序。我这样做是这样的:

<li class="item" ng-repeat="schedule in Schedules | filter:scheduleSearch | limitTo:numberOfItemsToDisplay | orderBy: 'namesAlphabet' as names">
    Display some data
</li> 
<ion-infinite-scroll on-infinite="addMoreItem()" ng-if="Schedules.length > numberOfItemsToDisplay"></ion-infinite-scroll>

现在,我添加了无限滚动,您可以在下面看到。我想在滚动后获得这些项目。这也有效(尽管在 iOS 上,它甚至在滚动之前就显示它们,但这是一个不同的问题)。

我这样做是这样的:

$scope.numberOfItemsToDisplay = 10; // Use it with limit to in ng-repeat
$scope.addMoreItem = function(done) {
    if ($scope.Schedules.length > $scope.numberOfItemsToDisplay)
        $scope.numberOfItemsToDisplay += 10; // load number of more items
        $scope.$broadcast('scroll.infiniteScrollComplete')
} 

问题是最初显示的项目(前 10 个)只是随机显示,并且不遵守 ng-repeat 中规定的 orderBy。所以我想做的是,它在滚动后向我显示列表项,同时仍然按照我在 ng-repeat 中所述进行排序。

我的问题是:我该如何做/解决这个问题?

我的代码中是否缺少某些内容?我尝试将其添加到 ng-if 中,但这根本不起作用。

最佳答案

limitTo 应放在 orderBy 之后(顺序很重要)。

<li class="item" ng-repeat="schedule in Schedules | filter:scheduleSearch | orderBy: 'namesAlphabet' | limitTo:numberOfItemsToDisplay">
    Display some data
</li> 

关于javascript - ng-if 的无限滚动会扰乱 ng-repeat 中的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42181435/

相关文章:

javascript - 在 Angular 中,你总是需要继承 Controller 中的服务变量吗?

angularjs - 发布后将模型插入到集合中

ionic-framework - 如何在 ionic 中隐藏标题栏?

javascript - 如何响应非 IE 浏览器中输入类型=文件的点击事件

c# - WCF Ajax 服务 - 如何将数组或 JSON 传递给服务?方法参数类型应该是什么?

angularjs - 防止输入设置表单 $dirty angularjs

javascript - 无法通过具有相同 Controller Ionic 1 的状态传递数据

jquery - 在 ionic 中更改 iframe 的 iframe 内容

javascript - javascript 的异步函数实际上是同步的吗?

javascript - 如何分配尚未分配的尽可能低的数字