5

私がしたいこと:

オブジェクトの配列を取得し、各オブジェクト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

正しい/望ましい順序は明らかに次のとおりです。

  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...
];
4

2 に答える 2

0

タイムスタンプを日付に変換してからorderBy()、angularjs を使用して並べ替えてみてください。

于 2018-05-29T05:11:21.060 に答える
0

タイムスタンプは整数ではなく文字列として API を介して取得されますか? ここで良さそうだなと実感。

于 2017-12-06T22:08:04.600 に答える