Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在无限卷轴中仅显示排序的25个元素?_Javascript_Angularjs_Angularjs Directive_Angularjs Scope_Angularjs Ng Repeat - Fatal编程技术网

Javascript 如何在无限卷轴中仅显示排序的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”和“^”按钮。单击该按钮,我需要升序和降序数据。在我的演示中,它工作正常。但问题是当用户单击它加载所有数据,但我希望它只显示25个数据(升序和降序)

我会详细解释

  • 当你们运行应用程序时,若用户想看到更多的内容,它只会在表格中显示25个元素。当移动到底部时,它会滚动表格,加载更多数据
  • 当用户点击页眉左侧图标(账户)“V”和“^”账户。它对所有对象进行排序并显示在屏幕上。所有对象表示它以排序方式显示2000个对象
  • 因此,问题是当用户单击标题左侧图标(Account)“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>

{{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记录始终包含所有记录


谢谢您的重播,您能给Plunker一个答案吗?事实上,原因是我使用这个$scope.invoice\u records=$scope.total\u invoice\u records;要对所有对象进行排序,我首先要对所有对象进行排序$scope.invoice\u records=$scope.total\u invoice\u records,然后只显示25个对象我明白你现在想做什么。更新了我的答案。我认为这是正确的。请告诉我你在做什么。我在答案中添加了代码更改的描述。
$scope.invoice_records=$scope.total_invoice_records;