Angularjs按时间排序24小时

时间:2015-04-01 06:20:00

标签: angularjs sorting

我想为我的表字段实现排序。我有一栏显示时间。这是我试过的例子

  <tr><td ng-click="predicate = 'appointmentTime'; reverse=!reverse">AdmitTime</td></tr>
    <tr ng-cloak ng-repeat='listItem in apptList | filterencounters:searchModel | orderBy:predicate:reverse' ng-class='rowClass(listItem)'>
    <td>{{listItem.appointmentTime}}</td>
    </tr>

以上代码正在运行,但它是基于AM&amp; amp; PM

enter image description here

我想在24小时前排序。

2 个答案:

答案 0 :(得分:1)

以下是包含自定义过滤器的示例代码:

我已在此处使用moment.js进行自定义排序。

&#13;
&#13;
   angular.module("app", [])
.controller("Cont", function($scope){
  $scope.apptList  = [{
time : "01:00 PM"
  },
  {
time : "02:05 PM"
  },
  {
time : "10:42 AM"
  },
  {
time : "10:44 AM"
  },
  {
time : "10:45 AM"
  }];
})
.filter('customOrderBy', function () {
   return function (arr, parameter) {
 return arr.sort(function(a, b) {
   return moment(b.time, "hh:mm A").diff(moment(a.time, "hh:mm A")) > 0 ? -1 : 1;
 });
};
});
&#13;
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script>
  <script src="http://momentjs.com/downloads/moment.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body ng-controller="Cont">
<ul>
  <li ng-repeat="app in apptList | customOrderBy">{{app.time}}</li>
  </ul>
</body>
</html>
  
&#13;
&#13;
&#13;

答案 1 :(得分:0)

最佳做法是存储Date个对象,对其进行排序,然后使用过滤器将其转换为您的格式:{{ listItem.appointedTime | date : 'HH:mm a' }}