使用ng-if的无限滚动会在ng-repeat中混乱

时间:2017-02-11 21:28:43

标签: 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,但这根本不起作用。

1 个答案:

答案 0 :(得分:1)

limitTo应放在orderBy之后(订单很重要)。

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