我有以下代码:
jade(html)
ng-repeat="message in messageList | orderBy: [sortingByIsUnread, sortingBySentDate]
的javascript
$scope.sortingBySentDate = function (message) () {
return moment(message.sentDate).format('X')
}
$scope.sortingByIsUnread = function (message) () {
return message.read
}
以上代码有效。但是当将数组传递给orderBy时,是否可以为特定的排序方法指定顺序? (sortingBySentDate - >顶部的新日期)
答案 0 :(得分:1)
基本上,排序函数将复杂对象映射到一些简单的值;这些映射值将在稍后对这些对象的集合进行排序时进行比较。基本上,如果a
对象的映射值小于b
对象的映射值,则前者首先出现。
由于您基本上比较时间戳(moment(message.sentDate).format('X')
的结果),因此很容易恢复其排序 - 只需使用unary minus
操作取消值,如下所示:
$scope.reversedSortingBySentDate = function(message) {
return -moment(message.sentDate).format('X');
}
这是有效的,因为对于每个常规的' (非NaN)编号a
和b
,如果a < b
为真,那么-a > -b
也是如此。
答案 1 :(得分:0)
当然,添加一个&#39; - &#39;扭转排序:
ng-repeat="message in messageList | orderBy: ['isUnread', '-sentDate']
其中isUnread和sentDate是消息的属性。