我已成功为项目实施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中的页面之前对它们进行排序?
任何帮助将不胜感激!
答案 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" >