Javascript 如何在无限卷轴中仅显示排序的25个元素?
我在我的演示中使用了无限滚动,我第一次只显示了25个元素。当用户向下滚动到底部时,它会加载更多的数据并显示更多的数据。如果用户希望显示整个数据,请重复这些步骤(滚动到底部加载更多数据)。但在我的演示中,有升序和降序功能。标题上有“V”和“^”按钮。单击该按钮,我需要升序和降序数据。在我的演示中,它工作正常。但问题是当用户单击它加载所有数据,但我希望它只显示25个数据(升序和降序) 我会详细解释Javascript 如何在无限卷轴中仅显示排序的25个元素?,javascript,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Repeat,我在我的演示中使用了无限滚动,我第一次只显示了25个元素。当用户向下滚动到底部时,它会加载更多的数据并显示更多的数据。如果用户希望显示整个数据,请重复这些步骤(滚动到底部加载更多数据)。但在我的演示中,有升序和降序功能。标题上有“V”和“^”按钮。单击该按钮,我需要升序和降序数据。在我的演示中,它工作正常。但问题是当用户单击它加载所有数据,但我希望它只显示25个数据(升序和降序) 我会详细解释 当你们运行应用程序时,若用户想看到更多的内容,它只会在表格中显示25个元素。当移动到底部时,它会滚动
- 当你们运行应用程序时,若用户想看到更多的内容,它只会在表格中显示25个元素。当移动到底部时,它会滚动表格,加载更多数据
- 当用户点击页眉左侧图标(账户)“V”和“^”账户。它对所有对象进行排序并显示在屏幕上。所有对象表示它以排序方式显示2000个对象
- 因此,问题是当用户单击标题左侧图标(Account)“V”和“^”时,我只想显示排序数组的25个元素,并在用户滚动到底部时加载数据
<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>
{{field.value}}
在ShowViewAfterSuccess
功能中,您可以对所有发票记录进行切片,以仅获取要显示的记录:
$scope.invoice_records = $scope.total_invoice_records.slice(0, showitems);
然后,在setSort
功能中,清除invoice\u记录
列表,然后将其与整个发票记录列表一起设置(不分割前25条):
这就是为什么重新排序后会得到整个列表
理想情况下,您可能希望从后端批量获取排序数据,以提供无限滚动。假设您无法做到这一点,您可以使用Limito过滤器来控制ngRepeat中显示的行数。此外,在setSort
中,您可能希望滚动回顶部
这是一个例子
主要变化是:
- 添加了Limito:主ngRepeat的计数器:
ng repeat=“总发票记录中的列|订购人:sortval:反向|限制:按$index计数器跟踪”
- 使计数器成为范围变量
- 通过删除所有切片,确保
$scope.invoice\u记录始终包含所有记录
$scope.invoice_records=$scope.total_invoice_records;