Javascript AngularJS:如何按acsending/decending顺序排序

Javascript AngularJS:如何按acsending/decending顺序排序,javascript,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Repeat,我正在实现表视图。在表视图中,我正在实现无限滚动。换句话说,我有2000个对象。我一次显示25个元素。当用户滚动到底部时,它将加载更多的25个元素,以此类推。。我在标题上有“”V”或“^”按钮。单击此图像时,我只想按降序显示最后25个元素。当滚动更多时,加载更多数据,依此类推。因此我在其中添加了过滤器,但它不起作用。请告诉我如何实现此功能 我将给你举个例子:当应用程序加载对象像这样加载时,像A,B,D,C,K,N…T,Z对象。当用户单击它时,显示Z,y,X,W,V,U…A或再次升序“A,B,C…

我正在实现表视图。在表视图中,我正在实现无限滚动。换句话说,我有2000个对象。我一次显示25个元素。当用户滚动到底部时,它将加载更多的25个元素,以此类推。。我在标题上有“”V”或“^”按钮。单击此图像时,我只想按降序显示最后25个元素。当滚动更多时,加载更多数据,依此类推。因此我在其中添加了过滤器,但它不起作用。请告诉我如何实现此功能

我将给你举个例子:当应用程序加载对象像这样加载时,像
A,B,D,C,K,N…T,Z
对象。当用户单击它时,显示Z,y,X,W,V,U…A或再次升序“A,B,C…Z”

这是普朗克

$scope.setSort = function(idx, reverse){
        $scope.sortval = 'columns['+idx+'].value';
        $scope.reverse = reverse;
    };
Html

我将再次解释我有2000个对象。它是随机显示的。我一次只显示25个对象。当用户滚动更多数据时,它会再次显示25个数据。但我想以升序和降序的方式对这些数据进行排序。首先我需要对2000个对象进行排序,然后从中显示25个元素,而不是如果用户希望加载更多数据,则滚动数据并加载。在您的示例中,它仅对前25个对象进行排序。然后加载另外25个元素,然后对5个元素进行排序。依此类推。因此,这不是正确的解决方案-

更新plunker

如果您正在处理一个大的数据集合,那么最好先加载整个集合。我有几个原因:

  • 对每个加载操作的结果进行排序对于较旧的浏览器来说可能会很费力,尤其是当引入更多数据时。这会降低你的用户界面速度
  • 如果源没有按顺序提供数据,则排序过程可能会将最后加载的项目集分散在视图的几个“页面”上,而不是用户正在查看的页面。然后,他们将不得不在搜索结果中向后搜索新信息

  • 尝试使用此库 首先,您需要从服务器或任何您喜欢的地方加载数据,而不是在控制器中,您必须实现一个在用户向下滚动时调用的函数。您还可以在控制器中订购数据

    $filter('orderBy')(data, orderProp, desc/asc)
    

    请参见angularjs过滤器顺序。当用户单击字母时,您必须对数据进行排序,并在数组中搜索以该字母开头的第一个元素。接下来你要做的就是在ngInfinitScroll指令回调函数中实现这一点。

    你可以使用Plunker吗?我提到的问题在应用程序中无法解决,因此代码示例对你没有什么好处。您需要更改从中获取数据的端点,并让它进行排序。这取决于您的数据源,不管它是什么。如果您可以告诉it以什么顺序传递数据,并且数据在用户会话期间不可能更改,那么这就是您的答案。(具体的实现取决于您。)如果数据不能按其来源排序,那么您需要一次下载所有记录,以便能够使用AngularJS控制排序。
    Update
    
    $filter('orderBy')(data, orderProp, desc/asc)