0

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?

1 Answer 1

1

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.

orderBy Angular docs

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.