如何在智能表中按日期对数据进行排序?通过st-sort它并不是那么好。
<table st-table="displayedCollection" st-safe-src="playerCollection" class="table table-hover">
<thead>
<tr>
<th st-sort="id" class="hover">Id</th>
<th st-sort="firstname" class="hover">Jméno</th>
<th st-sort="lastname" class="hover">Příjmení</th>
<th st-sort="registrationDate" class="hover">Datum registrace</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="player in displayedCollection">
<td class="hover">{{player.id}}</td>
<td class="hover">{{player.firstname}}</td>
<td class="hover">{{player.lastname}}</td>
<td class="hover">{{player.registrationDate}}</td>
</tr>
</tbody>
</table>
感谢您的回答。
答案 0 :(得分:7)
它应该正常工作(参见文档网站)。但是,如果您的注册日期是日期字符串,则应使用getter返回其日期对象版本,否则您将获得alphaNumeric命令
控制器中的
$scope.getters = {
registrationDate:function(row) {
return new Date(row.registrationDate);
}
}
因此您可以将标头绑定到此getter
<th st-sort="getters.registrationDate">Datum registrace</th>
答案 1 :(得分:2)
按照这样的ng-repeat
添加订单:
<tr ng-repeat="player in displayedCollection | orderBy:'registrationDate'">
<td class="hover">{{player.id}}</td>
<td class="hover">{{player.firstname}}</td>
<td class="hover">{{player.lastname}}</td>
<td class="hover">{{player.registrationDate}}</td>
</tr>
对于排序onclick
,您可以向确定排序的范围添加变量,并在orderBy
的{{1}}上使用该变量。
这样的事情:
ng-repeat
我为此创建了一个plunker。您将看到是否单击列标题,它将按该列对表进行排序。我希望它有所帮助。
答案 2 :(得分:0)
我将添加另一个与@laurent答案相关的可能解决方案。他的解决方案在我的情况下没有工作,所以我改变了一点吸气剂:
$scope.getters = {
registrationDate:function(row) {
return (new Date(row.registrationDate)).getTime();
}
}
getTime()
返回自1970/01/01以来的毫秒数,因此该列将按编号而不是按日期排序(在我的情况下它没有工作,我没有想到为什么)结果是一样的。