Angularjs 将还原传递到orderBy数组

Angularjs 将还原传递到orderBy数组,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,我有以下代码: 翡翠(html) javascript $scope.sortingBySentDate = function (message) () { return moment(message.sentDate).format('X') } $scope.sortingByIsUnread = function (message) () { return message.read } 上述代码有效。但是,当将数组传递给orderBy时,是否可以为特定的

我有以下代码:

翡翠(html)

javascript

$scope.sortingBySentDate = function (message) () {
        return moment(message.sentDate).format('X')
}

$scope.sortingByIsUnread = function (message) () {
        return message.read
}

上述代码有效。但是,当将数组传递给orderBy时,是否可以为特定的排序方法指定顺序?(SortingByEntDate->New dates在顶部)

当然可以,添加“-”以反转排序:

ng-repeat="message in messageList | orderBy: ['isUnread', '-sentDate']

其中isUnread和sentDate是消息的属性。

基本上,排序函数将复杂对象映射为某个简单值;这些映射值将在以后对这些对象的集合排序时进行比较。基本上,如果
a
对象的映射值小于
b
对象的映射值,则前者优先

当您基本上比较时间戳(这是
矩(message.sentDate).format('X')
)的结果)时,很容易恢复它们的顺序-只需使用
一元减
操作否定值,如下所示:

$scope.reversedSortingBySentDate = function(message) {
    return -moment(message.sentDate).format('X');
}

这是可行的,因为对于每个“常规”(非NaN)数字
a
b
,如果
a
是真的,那么
-a>-b
也是真的。

那么
返回时刻(message.sentDate).格式('X')
?我的意思是,如果这样做,我应该把评论变成答案吗?)是的,你可以,这是解决这个案子的唯一办法啊,我明白了,我明白了
$scope.reversedSortingBySentDate = function(message) {
    return -moment(message.sentDate).format('X');
}