Html OrderBy在ng repeat中不处理多个属性
我有这张桌子。我想按日期、日期、月份排序。当我使用下面的代码时,我可以按天进行排序,但我不能按排序人对天和月进行排序:[“天”,“月]。因此它显示了2015年7月8日之前的2015年6月9日。能给我一些线索吗Html OrderBy在ng repeat中不处理多个属性,html,angularjs,Html,Angularjs,我有这张桌子。我想按日期、日期、月份排序。当我使用下面的代码时,我可以按天进行排序,但我不能按排序人对天和月进行排序:[“天”,“月]。因此它显示了2015年7月8日之前的2015年6月9日。能给我一些线索吗 <h1>Reservations</h1> <table class="table"> <thead> <tr> <th ng-repeat="heading in data
<h1>Reservations</h1>
<table class="table">
<thead>
<tr>
<th ng-repeat="heading in data1.headings">{{heading}}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="reservation in reservations|orderBy:'day'" ng-show="reservation.is_approved">
<td>{{reservation.id}}</td>
<td>{{reservation.user.fb_id}}</td>
<td>{{reservation.user.name}}</td>
<td>{{reservation.user.phone}}</td>
<td>{{reservation.user.email}}</td>
<td>{{reservation.day}}/{{reservation.month}}/{{reservation.year}}</td>
</tr>
</tbody>
</table>
您需要将日期转换为Javascript日期对象,然后才能应用正确的排序 因此,在您的控制器中,请执行以下操作:根据您的需要进行更新 您可以使用创建Javascript日期对象 之后,您应该能够按日期正确排序
<tr ng-repeat="reservation in reservations|orderBy:'date'" ng-show="reservation.is_approved">
发生这种情况是因为orderBy不知道注入日期。它只是按数字排序。您应该添加到应用程序筛选器中,以将数据解析为正确的日期并对数组进行排序:
app.filter('filterByDate', function filterByDate() {
return function(array, descending) {
var order = descending ? 1 : -1;
array.sort(function(a, b) {
return (new Date(b.year, b.month, b.day) - new Date(a.year, a.month, a.day)) * order;
});
return array;
};
});
这样使用:
<tr ng-repeat="reservation in reservations|filterByDate" ng-show="reservation.is_approved">
<td>{{reservation.id}}</td>
<td>{{reservation.user.fb_id}}</td>
<td>{{reservation.user.name}}</td>
<td>{{reservation.user.phone}}</td>
<td>{{reservation.user.email}}</td>
<td>{{reservation.day}}/{{reservation.month}}/{{reservation.year}}</td>
</tr>
或者,如果要按降序对日期排序,请将参数true添加到筛选器:
<tr ng-repeat="reservation in reservations|filterByDate:true" ng-show="reservation.is_approved">
<td>{{reservation.id}}</td>
<td>{{reservation.user.fb_id}}</td>
<td>{{reservation.user.name}}</td>
<td>{{reservation.user.phone}}</td>
<td>{{reservation.user.email}}</td>
<td>{{reservation.day}}/{{reservation.month}}/{{reservation.year}}</td>
</tr>
默认情况下,orderBy使用升序排序,您可以使用['day','-month']按月降序
您想先按月份排序吗?那么它应该是:orderBy:['month','day']哈哈哈。我不知道为什么一开始我不这么想。它起作用了。
<tr ng-repeat="reservation in reservations|filterByDate:true" ng-show="reservation.is_approved">
<td>{{reservation.id}}</td>
<td>{{reservation.user.fb_id}}</td>
<td>{{reservation.user.name}}</td>
<td>{{reservation.user.phone}}</td>
<td>{{reservation.user.email}}</td>
<td>{{reservation.day}}/{{reservation.month}}/{{reservation.year}}</td>
</tr>