AngularJS orderBy不适用于ngOptions中的track by?

tas*_*uds 71 angularjs

我正在尝试ngOptionstrack by

这是我的模板

<select ng-model="asd" ng-options="user.id as user.name for user in users track by user.id | orderBy: 'name'">
Run Code Online (Sandbox Code Playgroud)

这是我的控制器

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;
 }
Run Code Online (Sandbox Code Playgroud)

在JSBin中写了一个片段来演示这个.这个问题是排序不起作用.我应该写一个自定义过滤器吗?

Ahm*_*eed 181

为了使用过滤器跟踪,track by需要在过滤器之后添加表达式.

试试这个:

user.id as user.name for user in users | orderBy: 'name' track by user.id
Run Code Online (Sandbox Code Playgroud)

文档ngRepeat在"参数"部分提及,具体如下:

在指定跟踪表达式之前,应将过滤器应用于表达式.

例如:项目中的项目 filter:searchText track by item.id是一种模式,可用于将过滤器与跟踪表达式一起应用于项目.