AngularJS orderBy не работает с треком в ngOptions?
Я пытаюсь сортировать ngOptions
с track by
Это мой шаблон
<select ng-model="asd" ng-options="user.id as user.name for user in users track by user.id | orderBy: 'name'">
Это мой контроллер
function AppCtrl($scope) {
$scope.users = [
{id : 25, name: 'Batista'},
{id : 26, name: 'Ultimate Warrior'},
{id : 27, name: 'Andre the giant'}
];
$scope.name = 'asdasd';
$scope.asd = 25;
}
Я написал фрагмент в JSBin, чтобы продемонстрировать это. Проблема с этим - сортировка не работает. Должен ли я писать собственный фильтр?
Ответы
Ответ 1
Чтобы использовать отслеживание с фильтрами, выражение track by
должно быть добавлено после фильтра.
Попробуйте это вместо:
user.id as user.name for user in users | orderBy: 'name' track by user.id
Документация для ngRepeat
упоминает это в разделе "Аргументы", в частности:
Перед определением выражения отслеживания следует применить фильтры к выражению.
и
Например: элемент в элементах | filter: searchText track by item.id - это шаблон, который может использоваться для применения фильтра к элементам в сочетании с выражением отслеживания.