角分页排序项目

时间:2017-06-13 16:49:52

标签: javascript angularjs sorting pagination

我已成功为项目实施Angular分页,但我希望首先显示最近创建的项目。

它们都具有“created_at”的值(来自Ruby on Rails API),这正是我试图对它们进行排序的。

目前显示如下:
第1 - 3页,第2页,第1页 第2 - 4,5,6页 Page 3 - 7

而我需要显示为:
第1 - 7,6,5页 Page 2 - 4,3,2 Page 3 - 1

HTML:
<div ng-repeat="post in postsIndex.all | startFrom: (currentPage - 1) * pageSize | limitTo: pageSize" class="post" >

app.js:

.angular
.module('blog', ['ui.bootstrap'])
.constant('API_URL', 'https://api-example-address.com')
.filter('startFrom', function(){
return function(data, start){
  return data.slice(start);
 };
});

这对我的邮政控制人员来说:

PostsIndexCtrl.$inject = ['Post', 'filterFilter', '$scope'];
function PostsIndexCtrl(Post, filterFilter, $scope) {
  const vm = this;
  vm.all = Post.query();
  $scope.pageSize = 3;
  $scope.currentPage = 1;
}

我无法对所有项目进行排序,而不仅仅是对页面上显示的项目进行排序。有没有办法在加载到ng-repeat中的页面之前对它们进行排序?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

按如下方式对数据进行排序:

data.sort(function(a,b){
  // Turn your strings into dates, and then subtract them
  // to get a value that is either negative, positive, or zero.
  return new Date(b.date) - new Date(a.date);
});

答案 1 :(得分:0)

解决了!只是将“orderBy”更改为startFrom属性之前的情况。

使用此修复:

  <div ng-repeat="post in postsIndex.all | orderBy:'created_at':true  | startFrom: (currentPage - 1) * pageSize | limitTo: pageSize" class="post" >

而不是:

  <div ng-repeat="post in postsIndex.all  | startFrom: (currentPage - 1) * pageSize | limitTo: pageSize | orderBy:'created_at':true" class="post" >