Angular orderBy:'timestamp' 把事情按错误的顺序排列

Posted

技术标签:

【中文标题】Angular orderBy:\'timestamp\' 把事情按错误的顺序排列【英文标题】:Angular orderBy:'timestamp' putting things in the wrong orderAngular orderBy:'timestamp' 把事情按错误的顺序排列 【发布时间】:2015-01-13 21:22:49 【问题描述】:

我想做什么:

获取一个对象数组,每个对象都带有object.timestamp(以毫秒为单位),并将它们从最新到最旧排序。

问题:

Angular 的 orderBy 似乎没有按正确的顺序排列。以下时间戳按以下顺序排列:

    1416187808218 - // Nov/16/2014 5:30:PM 1416187881192 - // Nov/16/2014 5:31:PM 1416189118263 - // Nov/16/2014 5:51:PM 1416189138827 - // Nov/16/2014 5:52:PM 1416130064119 - // Nov/16/2014 1:27:AM

正确/期望的顺序显然是:

    1416189138827 - // Nov/16/2014 5:52:PM 1416189118263 - // Nov/16/2014 5:51:PM 1416187881192 - // Nov/16/2014 5:31:PM 1416187808218 - // Nov/16/2014 5:30:PM 1416130064119 - // Nov/16/2014 1:27:AM

所以它应该是4, 3, 2, 1, 5,显然,1, 2, 3, 4, 5


相关代码:

html:

<div class="cardWrapper" ng-repeat="card in cards | orderBy:'timestamp'">
  various child elements
</div>

javascript:

scope.cards = homeData.get().cards; // returns an array of objects
// ^this^ becomes something similar to
scope.cards = [
  text: 'some text...', timestamp: 1416189138827, other: 'data',
  text: 'some text...', timestamp: 1416187881192, other: 'data'
  //etc...
];

【问题讨论】:

不知道你在做什么,但这很好用:jsfiddle.net/k2h80393 【参考方案1】:

您的时间戳是作为字符串而不是整数通过 API 传递的吗?我意识到这里看起来不错。

【讨论】:

【参考方案2】:

尝试将时间戳转换为日期,然后在 angularjs 中使用orderBy() 进行排序。

【讨论】:

以上是关于Angular orderBy:'timestamp' 把事情按错误的顺序排列的主要内容,如果未能解决你的问题,请参考以下文章

Angular orderBy:'timestamp' 把事情按错误的顺序排列

Angular orderBy 数字排序为 ng-repeat 中的文本

Timestame类型和String 类型的转化

Angular2入坑指南——管道(搜索功能)

golang sarama_produce_test_with_timestamp.go

数据库mysql中,想建立一个默认值是系统当前时间的字段,那么这个字段的类型必须是timestam