Reputation: 526
Cant get this to work:
<tr ng-repeat="serv in servicesAdded |orderBy:predicate:reverse">
<td>{{serv.stepNumber}}</td>...
In my controller :
$scope.predicate = 'stepNumber';
$scope.reverse = true;
$scope.order = function (predicate) {
$scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
$scope.predicate = predicate;
};
My array of objects looks like this
$scope.servicesAdded = [{stepNumber:-1,otherData:""},
{stepNumber:-2,otherData:""},
{stepNumber:1,otherData:""}];
I never comes out in reverse order (-2 first) what am i doing wrong?
Upvotes: 0
Views: 903
Reputation: 3075
Try syntax with '+predicate', '-predicate'
<tr ng-repeat="serv in servicesAdded |orderBy:usedPredicate">
<td>{{serv.stepNumber}}</td>...
and Angular code:
$scope.order = function (predicate) {
$scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
$scope.usedPredicate = $scope.reverse ? '-' : '+' + predicate;
$scope.predicate = predicate;
};
An expression can be optionally prefixed with + or - to control ascending or descending sort order (for example, +name or -name). If no property is provided, (e.g. '+') then the array element itself is used to compare where sorting.
Upvotes: 1