desc - order by angularjs table
Filtro de orden descendente por fecha en AngularJs (7)
De acuerdo con la documentación , puede usar el argumento reverse
.
filter:orderBy(array, expression[, reverse]);
Cambie su filtro a:
orderBy: ''created_at'':true
<div class="recent" ng-repeat="reader in
(filteredItems = (book.reader | orderBy: ''created_at'' | limitTo: 1))">
</div>
Entonces, el libro proviene de la API de descanso y tiene muchos lectores conectados. Quiero obtener el lector "reciente".
El campo created_at
tiene el valor que identifica al usuario como reciente. Pero el código anterior me da el lector más antiguo. Entonces, ¿el orden necesita ser invertido? ¿Hay alguna forma de tener la clasificación en orden descendente?
En mi caso, la ordenBy está determinada por un cuadro de selección. Prefiero la respuesta de Ludwig porque puedes establecer la dirección de clasificación en las opciones de selección como tales:
$scope.options = [
{ label: ''Title'', value: ''title'' },
{ label: ''Newest'', value: ''-publish_date'' },
{ label: ''Featured'', value: ''-featured'' }
];
margen:
<select ng-model="orderProp" ng-options="opt as opt.label for opt in options"></select>
<ul>
<li ng-repeat="item in items | orderBy:orderProp.value"></li>
</ul>
Puede prefijar el argumento en orderBy
de un ''-'' para tener un orden descendente en lugar de ascender. Lo escribiría así:
<div class="recent"
ng-repeat="reader in book.reader | orderBy: ''-created_at'' | limitTo: 1">
</div>
Esto también se establece en la documentación para el filtro orderBy .
Quizás esto puede ser útil para alguien:
En mi caso, estaba obteniendo una variedad de objetos, cada uno con una fecha establecida por Mongoose.
Solía:
ng-repeat="comment in post.comments | orderBy : sortComment : true"
Y definió la función:
$scope.sortComment = function(comment) {
var date = new Date(comment.created);
return date;
};
Esto funcionó para mí.
Y un ejemplo de código:
<div ng-app>
<div ng-controller="FooController">
<ul ng-repeat="item in items | orderBy:''num'':true">
<li>{{item.num}} :: {{item.desc}}</li>
</ul>
</div>
</div>
Y el JavaScript:
function FooController($scope) {
$scope.items = [
{desc: ''a'', num: 1},
{desc: ''b'', num: 2},
{desc: ''c'', num: 3},
];
}
Te regalaré:
3 :: c
2 :: b
1 :: a
En JSFiddle: http://jsfiddle.net/agjqN/
vea las muestras de w3schools: https://www.w3schools.com/angular/angular_filters.asp https://www.w3schools.com/angular/tryit.asp?filename=try_ng_filters_orderby_click
luego agrega la bandera "inversa":
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body>
<p>Click the table headers to change the sorting order:</p>
<div ng-app="myApp" ng-controller="namesCtrl">
<table border="1" width="100%">
<tr>
<th ng-click="orderByMe(''name'')">Name</th>
<th ng-click="orderByMe(''country'')">Country</th>
</tr>
<tr ng-repeat="x in names | orderBy:myOrderBy:reverse">
<td>{{x.name}}</td>
<td>{{x.country}}</td>
</tr>
</table>
</div>
<script>
angular.module(''myApp'', []).controller(''namesCtrl'', function($scope) {
$scope.names = [
{name:''Jani'',country:''Norway''},
{name:''Carl'',country:''Sweden''},
{name:''Margareth'',country:''England''},
{name:''Hege'',country:''Norway''},
{name:''Joe'',country:''Denmark''},
{name:''Gustav'',country:''Sweden''},
{name:''Birgit'',country:''Denmark''},
{name:''Mary'',country:''England''},
{name:''Kai'',country:''Norway''}
];
$scope.reverse=false;
$scope.orderByMe = function(x) {
if($scope.myOrderBy == x) {
$scope.reverse=!$scope.reverse;
}
$scope.myOrderBy = x;
}
});
</script>
</body>
</html>
Descendente Ordenar por fecha
Le ayudará a filtrar los registros con la fecha en orden descendente.
$scope.logData = [
{ event: ''Payment'', created_at: ''04/05/17 6:47 PM PST'' },
{ event: ''Payment'', created_at: ''04/06/17 12:47 AM PST'' },
{ event: ''Payment'', created_at: ''04/05/17 1:50 PM PST'' }
];
<div ng-repeat="logs in logData | orderBy: ''-created_at''" >
{{logs.event}}
</div>