Ik probeer ngOptions
te sorteren met track by
Dit is mijn sjabloon
<select ng-model="asd" ng-options="user.id as user.name for user in users track by user.id | orderBy: 'name'">
Dit is mijn controller
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;
}
Ik heb een fragment in JSBingeschreven om dit aan te tonen. Het probleem hiermee is dat het sorteren niet werkt. Moet ik een aangepast filter schrijven?
Antwoord 1, autoriteit 100%
Om tracking met filters te gebruiken, moet de uitdrukking track by
worden toegevoegd na het filter.
Probeer dit in plaats daarvan:
user.id as user.name for user in users | orderBy: 'name' track by user.id
De documentatie voor ngRepeat
vermeldt dit in de sectie “Argumenten” , specifiek:
Filters moeten op de uitdrukking worden toegepast voordat een volguitdrukking wordt opgegeven.
en
Bijvoorbeeld: item in items | filter:searchText track by item.idis een patroon dat kan worden gebruikt om een filter toe te passen op items in combinatie met een tracking-expressie.