Массив углового порядка объекта в обратном порядке

Не могу заставить это работать:

<tr ng-repeat="serv in servicesAdded |orderBy:predicate:reverse">
      <td>{{serv.stepNumber}}</td>...

В моем контроллере:

    $scope.predicate = 'stepNumber';
    $scope.reverse = true;
    $scope.order = function (predicate) {
        $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
        $scope.predicate = predicate;
    };

Мой массив объектов выглядит так

  $scope.servicesAdded = [{stepNumber:-1,otherData:""},
                          {stepNumber:-2,otherData:""},
                          {stepNumber:1,otherData:""}];

Я никогда не выхожу в обратном порядке (сначала -2), что я делаю не так?


person Jack    schedule 21.07.2015    source источник


Ответы (1)


Попробуйте синтаксис с '+predicate', '-predicate'

<tr ng-repeat="serv in servicesAdded |orderBy:usedPredicate">
    <td>{{serv.stepNumber}}</td>...

и угловой код:

$scope.order = function (predicate) {
        $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
        $scope.usedPredicate = $scope.reverse ? '-' : '+' + predicate;
        $scope.predicate = predicate;
    };

Выражение может иметь префикс + или - для управления порядком сортировки по возрастанию или убыванию (например, +имя или -имя). Если свойство не указано (например, «+»), то для сравнения сортировки используется сам элемент массива.

заказ документов Angular

person Keammoort    schedule 21.07.2015