【问题标题】:Angular orderBy with date string带有日期字符串的角度 orderBy
【发布时间】:2014-12-26 02:40:44
【问题描述】:

我正在尝试按日期在我的网络应用程序中对事件进行排序(在这种情况下,我的数据库中的“开始”日期)。我遇到了日期排序不正确的问题。我相信他们是按字母数字排序而不是按日期排序,因为我的“开始”字段是一个字符串。我的问题是,如何最好地将此字段转换为 Date 以便正确排序?相关代码如下:

html:

<div ng-repeat="event in events | orderBy:'start'">{{event.city}}</div>

角度控制器:

angular.module('MainCtrl', []).controller('MainController', function($scope, $routeParams, Events) {

  // pull empty event details from API based on routeParams to get all events
  $scope.id = '';

  Events.get($scope.id).success(function(response) {
      $scope.events = response;
  });
});

示例数据库对象:

{
  "_id": {
      "$oid": "54978d87ac1e3caaeee8452c"
  },
  "event": "New Years Eve - Times Square",
  "city": "New York",
  "state": "New York",
  "date": "December 31, 2014",
  "start": "December 31, 2014",
  "end": "January 1, 2015",
  "radius": "400",
  "team_1": "",
  "team_2": "",
  "object_id": "10897094",
  "longitude": "-73.9848931",
  "latitude": "40.7591529",
  "photos": []
}

【问题讨论】:

  • 将字段转换为返回数据的控制器或服务中的日期对象。

标签: javascript angularjs datetime


【解决方案1】:

原来是一个非常简单的解决方案。我只是将以下代码添加到我的 Events.get 中的控制器中:

for (var i = 0, max = response.length; i < max; i++) {
        $scope.events[i].start = new Date(response[i].start);
}

【讨论】:

  • 或者更短的angular.forEach($scope.events, function(event){ event.start = new Date(event.start); }); :)
  • 嗨,马特,它是如何在浏览器中显示的,实际上有一个日期显示为“31AUG2016 21:26:11”的场景,并且想做升序和降序,你能帮忙吗?同样..谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多