Угловое значение подстановки 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>