2017-06-13 61 views
0

我已經成功實現了項目的角度分頁,但我希望最近創建的項目首先顯示。角度分頁排序項目

它們都具有「created_at」的值(來自Ruby on Rails API),這正是我想要對它們進行排序的值。

在它的顯示作爲時刻如下:
第1頁 - 3,2,1
第2頁 - 第4,5,6
第3頁 - 7

儘管我需要顯示爲:
第1頁 - 7,6,5
第2頁 - 第4,3,2
第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

解決它!只是將「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" > 
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); 
}); 
+0

你的意思是添加到app.js或後控制器?我試過orderBy:「created_at」,但只適用於頁面上的項目,而不是數據中的每個項目。 –