Angularjs 将还原传递到orderBy数组
我有以下代码: 翡翠(html) javascriptAngularjs 将还原传递到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时,是否可以为特定的
$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');
}