AngularJS 按日期排序
AngularJS orderBy date
我有这样的东西:
<div ng-repeat="i in inv">
<p>{{i.dueDate}}</p>
</div>
我想先按最早的日期订购。我知道有办法做到这一点,但我无法弄清楚。有人可以帮忙吗?
这是示例 js:
$scope.inv = [
{
name: "Paul",
dueDate: "5/21/2014"
},
{
name: "Dan",
dueDate: "5/22/2014"
},
{
name: "Randy",
dueDate: "1/12/2015"
}
];
这应该适合你:
<div ng-repeat="i in inv | orderBy:'-dueDate'">
<p>{{i.dueDate}}</p>
</div>
您必须定义自定义程序函数,然后在 orderBy
表达式中使用它。例如:
$scope.dueDateFormatter = function(i) {
var dateParts = i.dueDate.split(/\//);
return dateParts[2]
+ '-' + (dateParts[0] < 10 ? '0' + dateParts[0] : dateParts[0])
+ '-' + (dateParts[1] < 10 ? '0' + dateParts[1] : dateParts[1]);
};
<div ng-repeat="i in inv | orderBy:dueDateFormatter">
<p>{{i.dueDate}}</p>
</div>
Demo。该函数基本上重新排序日期字符串,以便年在前,月在后,日在后。如果您使用 moment.js
或类似的库,则可以改用它们的解析器。
您需要将字符串转换为 YYYY-MM-DD 格式
<li ng-repeat="item in inv | orderBy:orderByDate">{{item.name}} </li>
$scope.orderByDate = function(item) {
var parts = item.dueDate.split('/');
var date = new Date(parseInt(parts[2], parseInt(parts[0]), parseInt(parts[1])));
return date;
};
我有这样的东西:
<div ng-repeat="i in inv">
<p>{{i.dueDate}}</p>
</div>
我想先按最早的日期订购。我知道有办法做到这一点,但我无法弄清楚。有人可以帮忙吗?
这是示例 js:
$scope.inv = [
{
name: "Paul",
dueDate: "5/21/2014"
},
{
name: "Dan",
dueDate: "5/22/2014"
},
{
name: "Randy",
dueDate: "1/12/2015"
}
];
这应该适合你:
<div ng-repeat="i in inv | orderBy:'-dueDate'">
<p>{{i.dueDate}}</p>
</div>
您必须定义自定义程序函数,然后在 orderBy
表达式中使用它。例如:
$scope.dueDateFormatter = function(i) {
var dateParts = i.dueDate.split(/\//);
return dateParts[2]
+ '-' + (dateParts[0] < 10 ? '0' + dateParts[0] : dateParts[0])
+ '-' + (dateParts[1] < 10 ? '0' + dateParts[1] : dateParts[1]);
};
<div ng-repeat="i in inv | orderBy:dueDateFormatter">
<p>{{i.dueDate}}</p>
</div>
Demo。该函数基本上重新排序日期字符串,以便年在前,月在后,日在后。如果您使用 moment.js
或类似的库,则可以改用它们的解析器。
您需要将字符串转换为 YYYY-MM-DD 格式
<li ng-repeat="item in inv | orderBy:orderByDate">{{item.name}} </li>
$scope.orderByDate = function(item) {
var parts = item.dueDate.split('/');
var date = new Date(parseInt(parts[2], parseInt(parts[0]), parseInt(parts[1])));
return date;
};