我有一份包含就业历史的数据。我的就业日期有两个字段:
yearTo, monthTo
我需要根据最近的就业日期正确地对就业历史进行排序。
<tr id="employment_history_" ng-repeat="history in candidate.employmentHistory | orderBy : ['-yearTo','monthTo',] | date:['YYYY', 'MMM'] ">
它正常工作。但我有一个问题。字段monthTo
还可以包含值Present
,而不仅仅包含MMM
等月份日期格式JAN, FEB MAR
。
问我如何对此进行排序,我知道我的格式为date
,但我想将monthTo
值Present
的记录放在首位?
答案 0 :(得分:1)
所以这个JSFiddle可以帮助你朝着正确的方向前进:JSFiddle
这种方式的工作方式是因为您可以为orderBy指令提供一个谓词数组,就像您在提供的示例中所做的那样。在您的示例中,您只使用字符串谓词,而您也可以使用函数谓词。函数谓词将接收您尝试订购的项目,您可以选择要返回的项目,因此angular可以使用该值来订购该值。
ng-repeat="hist in main.history | orderBy: ['-yearTo', main.orderMonthTo]"
this.orderMonthTo = function(item) {
if (item.monthTo === 'Present') {
return -13;
} else {
return Number(moment(item.monthTo, 'MMM').format('M'))*-1;
}
}