AngularJS orderBy werkt niet met track by in ngOptions?

Ik probeer ngOptionste 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 byworden 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 ngRepeatvermeldt 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.

Other episodes