我在我的演示中使用无限滚动,其中我第一次只显示25个元素。当用户向下滚动到底部时,它会加载更多数据并显示更多数据。如果用户想要整个数据,则执行重复步骤显示(滚动到底部加载更多数据)。但在我的演示中,存在升序和降序功能。在标题上有“V”和“^”按钮存在。点击该按钮我需要提升和下降数据。我的演示它运行正常。但问题是当用户点击它加载所有数据但我希望它只显示25个数据(升序和降序。)
我会解释更多。
HTML
<ion-scroll scrollbar-y="true" ng-style="backGroundImageHeightObj" delegate-handle="invoicegrid">
<div class="row" ng-repeat="column in invoice_records | orderBy: sortval: reverse track by $index">
<div class="col col-center brd collapse-sm" ng-repeat="field in column.columns" ng-show="data[$index].checked && data[$index].fieldNameOrPath===field.fieldNameOrPath">{{field.value}}</div>
<div class="col col-10 text-center brd collapse-sm"></div>
</div>
</ion-scroll>
<ion-infinite-scroll immediate-check="false" ng-if="!noMoreItemsAvailable" on-infinite="loadMore(query)" distance="10%"></ion-infinite-scroll>
答案 0 :(得分:2)
在ShowViewAfterSuccess
功能中,您将所有发票记录分割为仅显示要显示的记录:
$scope.invoice_records = $scope.total_invoice_records.slice(0, showitems);
然后,在setSort
函数中清除invoice_records
列表,然后使用整个发票记录列表进行设置(不会切割前25个):
$scope.invoice_records=$scope.total_invoice_records;
这就是为什么在重新排序时获得整个列表的原因。
理想情况下,您希望分批从后端获取排序数据以提供无限滚动。假设您不能这样做,您可以使用limitTo过滤器来控制ngRepeat中显示的行数。另外,在setSort
中,您可能需要滚动回到顶部。
这里是updated Plunker。
主要变化是:
ng-repeat="column in total_invoice_records | orderBy: sortval: reverse | limitTo: counter track by $index"
使计数器成为范围变量
通过删除所有切片,确保$scope.invoice_records
始终包含所有记录。