我想在AngularJs中对ng-repeat中的列进行排序。
我有这样的事情:
<th class="cl_sort_init" ng-click="predicate='EstimatedCloseDate';
reverse=!reverse" ng-class="{'cl_sort_desc':
predicate=='EstimatedCloseDate'&&reverse==true, 'cl_sort_asc':
predicate=='EstimatedCloseDate'&&reverse==false}">Close Date</th>
然而,EstimatedCloseDate是一个字符串。因此它不应该按照它应该的方式工作。如何使其作为本专栏的日期工作。其他列是字符串,它们工作正常。
任何想法和建议!!!
答案 0 :(得分:1)
根据日期字符串的格式,您可以执行
(new Date(EstimatedCloseDate))
这将解析日期字符串,然后将其转换为日期对象,这将对排序很好 如果这不起作用,您将必须编写自己的日期解析器,最终将日期转换为int或Date对象
答案 1 :(得分:0)
在谓词中,您应该能够将字符串转换为日期时间。不需要其他转换。请参阅此处了解字符串到日期的转换:Converting string to date in js和格式详情。
如果您的日期格式不正常,请查看像datejs这样的图书馆以获取帮助。
但是这里有一些片段将几个日期字符串转换为日期。请注意,上次转换失败。
var dtString = "2010-12-25";
var dt = new Date(dtString);
console.log(dtString + " = " + dt);
dtString = "12/25/2010";
dt = new Date(dtString);
console.log(dtString + " = " + dt);
dtString = "25/12/2010";
dt = new Date(dtString);
console.log(dtString + " = " + dt);
输出:
2010-12-25 = Fri Dec 24 2010 18:00:00 GMT-0600 (CST) 12/25/2010 = Sat Dec 25 2010 00:00:00 GMT-0600 (CST) 25/12/2010 = Invalid Date