Angular orderBy:“timestamp”将事物按错误的顺序排列

Angular orderBy:'timestamp' putting things in the wrong order

本文关键字:错误 排列 顺序 orderBy timestamp Angular      更新时间:2023-09-26

我想做什么:

获取一个对象数组,每个对象以毫秒为单位object.timestamp,并按从最新到最旧的顺序排列它们。

问题:

Angular的顺序似乎没有把事情放在正确的顺序上。以下时间戳按以下顺序排列:

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

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

  1. 1416189138827 - // Nov/16/2014 5:52:PM
  2. 1416189118263 - // Nov/16/2014 5:51:PM
  3. 1416187881192 - // Nov/16/2014 5:31:PM
  4. 1416187808218 - // Nov/16/2014 5:30:PM
  5. 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...
];

您的时间戳是否以字符串而不是整数的形式通过您的 API 出现?我意识到这里看起来不错。

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