AngularJS orderBy不能在ngOptions中跟踪?

我试图通过track bysortingngOptions

这是我的模板

 <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中写了一个片段来演示这个。 这个问题是sorting不起作用。 我应该写一个自定义filter吗?

为了使用filtertrack by需要在filter之后添加track byexpression式的track by

试试这个:

 user.id as user.name for user in users | orderBy: 'name' track by user.id 

ngRepeat的文档在“参数”一节中提到了这一点,具体来说:

在指定跟踪expression式之前,filter应该应用于expression式。

例如: item中的项目| filter:searchText track by item.id是一种模式,可能会将跟踪expression式应用于项目的filter。