Как заказать по цифре и символу
у меня есть ng-repeat
и в раскрывающемся списке есть следующие значения.
Up to 6 months
From 13 to 24 months
Higher than 24 months
From 6 to 12 months
и мне нужно отсортировать значения, как показано ниже
//following is the expected output
// Up to 6 months
//From 6 to 12 months
//From 13 to 24 months
//Higher than 24 months
$scope.items = [{name: 'Up to 6 months', id: 30 },{ name: 'From 13 to 24 months', id: 27 },{ name: 'Higher than 24 months', id: 50 },{ name: 'From 6 to 12 months', id: 50 }];
2 ответа
Ваше поле имени не является форматированным текстом, вы не можете сделать заказ по имени, добавьте одно поле, как показано ниже, которое заполнит значение поля отсортированными критериями. Пример функции сортировки приведен здесь:
$scope.items.sort(
function(a,b) {
// Change the logic based on your criteria
return (/*Your criteria*/) ? 1 : 0);
}
);
Ваши данные будут выглядеть следующим образом:
$scope.items = [{name: 'Up to 6 months',sort:0, id: 30 },{ name: 'From 13 to 24 months',sort:1, id: 27 },{ name: 'Higher than 24 months',sort:3, id: 50 },{ name: 'From 6 to 12 months', sort:4, id: 50 }];
Используйте следующее:
<div ng-repeat="item in items | orderBy:['sort','id']">{{item.name}}-{{item.id}}</div>
Ваши товары будут загружены следующим образом,
$scope.selectedItem = { name: 'two', id: 27 };
$scope.items = [{name: 'Up to 6 months',sort:1, id: 30 },{ name: 'From 13 to 24 months',sort:3, id: 27 },{ name: 'Higher than 24 months',sort:4, id: 50 },{ name: 'From 6 to 12 months', sort:2, id: 50 }];
нг-повтор
<select ng-model="selectedItem">
<option ng-repeat="item in items | orderBy:['sort']" value={{item.id}}>
{{item.name}}
</option>
</select>