Гигантский массив объектов, на котором я был благословлен, сортируется по его коду, а не по человеческому имени. Я бы хотел, чтобы он показывал дружеские отношения.
portsService:
var _getPorts = function (){
return _portList;
}
var _portList = [{
"code": "0101",
"portOfEntry": "Portland, ME"
}, {
"code": "0102",
"portOfEntry": "Bangor, ME"
}, {
"code": "0103",
"portOfEntry": "Eastport, ME"
}, {
"code": "0104",
"portOfEntry": "Jackman, ME"
}, ...
контроллер:
vm.getPortsSelect = function () {
vm.ports = portsService.getPorts();
};
Посмотреть:
<select
ng-model="adminManifestVm.Manifest.usPortOfArrival"
ng-options="port.code as port.portOfEntry for port in adminManifestVm.ports"
name="usPortOfArrival"
class="form-control input-inline input-medium"
required>
<option value=""></option>
</select>
Существует множество способов сортировки массива объектов вручную. Есть ли уклон?
Вы можете просто использовать фильтр orderBy
ng-options="port.code as port.portOfEntry for port in adminManifestVm.ports | orderBy:'code'"
Да, угловой способ - использовать filter
. В этом случае фильтр orderBy
так:
<select ng-model="adminManifestVm.Manifest.usPortOfArrival"
ng-options="port.code as port.portOfEntry for port in adminManifestVm.ports | orderBy: 'code'"
name="usPortOfArrival"
class="form-control input-inline input-medium"
required>
<option value=""></option>
</select>
Вот использование из документации orderBy
:
{{ orderBy_expression | orderBy: expression: reverse: comparator}}
Как вы можете видеть, также можно отменить порядок с помощью обратного булева. Выражение также может быть необязательно префикс + или - для управления направлением сортировки, восходящим или нисходящим. Например, "+code" или "-code" в этом случае.