Угловое значение подстановки orderBy

У меня есть следующий объект, над которым я повторяю ngRepeating, и который я хочу отсортировать по цене.

 "data":{  
  "12654fcd":{  
     "sequenceNumber":"12654fcd",
     "directionInd":"OneWay",
     "journey":[  ],
     "pricing":{
          "total":"1200.79"
     },
     "breakdown":{  },
     "validatingCarrier":"DL"
  },
  "1eb562ab":{  
     "sequenceNumber":"1eb562ab",
     "directionInd":"OneWay",
     "journey":[  ],
     "pricing":{
          "total":"1400.80"
     },
     "breakdown":{  },
     "validatingCarrier":"DL"
  },
}

А вот и вывод:

 <div class="row" data-ng-repeat="itinerary in results.data.data |   orderBy:'pricing.total'">

Мое повторение работает нормально, однако я пытаюсь отсортировать вывод по ценам.total без какого-либо успеха.

Как бы я поступил так? Можно ли вообще добиться сортировки по подценке?

Ура,

2 ответа

Решение

orderBy - фильтр в модуле ng

Упорядочивает указанный массив по предикату выражения. Упорядочено по алфавиту для строк и численно для чисел. Примечание. Если вы заметили, что числа не сортируются должным образом, убедитесь, что они на самом деле сохраняются как числа, а не как строки.

Заказ по работам только для массивов. Ваш не массив, его объект.

Измените свою структуру данных на

"data":[  
  {  
     "sequenceNumber":"12654fcd",
     "directionInd":"OneWay",
     "journey":[  ],
     "pricing":{
          "total":"1200.79"
     },
     "breakdown":{  },
     "validatingCarrier":"DL"
  },
  {  
     "sequenceNumber":"1eb562ab",
     "directionInd":"OneWay",
     "journey":[  ],
     "pricing":{
          "total":"1400.80"
     },
     "breakdown":{  },
     "validatingCarrier":"DL"
  },
]

$scope.by_pricing_total = function(it){вернуть it.pricing.total} затем orderBy:by_pricing_total

angular.module('orderByExample', [])
  .controller('ExampleController', ['$scope',
    function($scope) {
      $scope.friends = [{
        name: 'John',
        phone: '555-1212',
        age: 10,
        data: {
          a: 57
        }
      }, {
        name: 'Mary',
        phone: '555-9876',
        age: 19,
        data: {
          a: 53
        }
      }, {
        name: 'Mike',
        phone: '555-4321',
        age: 21,
        data: {
          a: 51
        }
      }, {
        name: 'Adam',
        phone: '555-5678',
        age: 35,
        data: {
          a: 53
        }
      }, {
        name: 'Julie',
        phone: '555-8765',
        age: 29,
        data: {
          a: 52
        }
      }];

      $scope.getDataA = function(it) {
        console.log(it.data);
        return it.data.a;
      }
    }
  ]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<h1>Hello Plunker!</h1>
<div ng-app="orderByExample" ng-controller="ExampleController">
  <table class="friend">
    <tbody>
      <tr>
        <th>Name</th>
        <th>Phone Number</th>
        <th>Age</th>
      </tr>
      <tr ng-repeat="friend in friends | orderBy:getDataA">
        <td>{{friend.name}}</td>
        <td>{{friend.phone}}</td>
        <td>{{friend.age}}</td>
      </tr>
    </tbody>
  </table>
</div>

Другие вопросы по тегам