我想为我的表字段实现排序。我有一栏显示时间。这是我试过的例子
<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
我想在24小时前排序。
答案 0 :(得分:1)
以下是包含自定义过滤器的示例代码:
我已在此处使用moment.js
进行自定义排序。
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;
答案 1 :(得分:0)
最佳做法是存储Date
个对象,对其进行排序,然后使用过滤器将其转换为您的格式:{{ listItem.appointedTime | date : 'HH:mm a' }}
。