orderBy,第一个应该是最老的,剩下的最新的

时间:2015-02-13 10:34:54

标签: javascript angularjs sorting filter angularjs-filter

我正在尝试对我的评论进行排序。我希望 last 评论是第一个评论,其余的应该由id订购。

以下是id对它们进行排序,但我需要将最后一条评论放在最上面。

<div ng-repeat="comment in comments | orderBy:'-id'"></div>

如果我们有数字1, 2, 3, 4,则输出应为4, 1, 2, 3请注意,这不是按时间顺序

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

(现在回答重写,我理解这个问题)。

您需要使用自定义排序功能。

max_comment_id = comments.reduce(function(p,c){ return Math.max(p,c.id)},0);

comments.sort(function(a,b){ 
    if (a.id == max_comment_id){return -1};
    if (b.id == max_comment_id){return 1};
    return a.id - b.id;
});

Demo

答案 1 :(得分:1)

你可以用两个div来做: -

假设数据: -

$scope.comments = [
        {id: 1, comment: '1'},
        {id: 2, comment: '2'},
        {id: 3, comment: '3'},
        {id: 4, comment: '4'}
    ]

<div ng-controller="MyCtrl">
    <div ng-repeat="comment in comments|orderBy:'-id'|limitTo:1">
        {{comment.comment}}
    </div>
        <div ng-repeat="comment in comments | orderBy:'id'|limitTo:comments.length-1">{{comment.comment}}</div>
</div>

Fiddle

此解决方案可能并不完美,但它可以为您服务。