Angular orderBy:' timestamp'把事情放错了

时间:2014-11-17 02:36:17

标签: javascript arrays angularjs sorting angularjs-orderby

我想做什么:

以毫秒为单位取一个对象数组,每个对象object.timestamp,并从最新到最旧排序。

问题:

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

  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
  6. 正确/期望的顺序显然是:

    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
    6. 所以它应该是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...
      ];
      

2 个答案:

答案 0 :(得分:0)

您的时间戳是通过您的API作为字符串而不是整数?我在这里意识到它看起来很好。

答案 1 :(得分:0)

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