我有以下代码,只要按所需属性排序就可以正常工作:
<select ng-model="sortorder">
<option value="name">Sort by Name</option>
<option value="created">Sort by Date</option>
</select>
<div ng-repeat="item in items | orderBy:sortorder">
{{item.name}}, {{item.created}}
</div>
然而,日期以字符串形式出现,例如:2016年4月5日,这并没有给我准确的排序。如何检测列表是否按created
排序,然后将其转换为Date
对象以获得准确的结果。
样品输出:
样本名称1,2016年4月6日
样本名称2,2014年1月13日
答案 0 :(得分:1)
您必须将日期转换为时间戳(即自......以来的秒数)才能准确排序。请注意时区,因为javascript日期取决于用户的计算机/浏览器设置。我建议您查看MomentJS以处理日期操作。
您无法检测用户是否选择格式化日期进行排序。相反,您将向存储日期的时间戳版本的每个数据行添加一个附加元素。你可以在你的控制器中做到这一点。