Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ngOptions";按“跟踪”;表达_Javascript_Angularjs_Ng Options - Fatal编程技术网

Javascript ngOptions";按“跟踪”;表达

Javascript ngOptions";按“跟踪”;表达,javascript,angularjs,ng-options,Javascript,Angularjs,Ng Options,我试图使用“track by”表达式在对象数组中按id跟踪选择。然而,我似乎无法让它像我认为的那样工作 //ids from server $scope.serverDTO = ['1','2','3']; //composed objects from the ID set $scope.composedData = [{id:1,name:"test"},{id:2,name:"test"},{id:3,name:"test"}]; <!-- select box --> &

我试图使用“track by”表达式在对象数组中按id跟踪选择。然而,我似乎无法让它像我认为的那样工作

//ids from server
$scope.serverDTO = ['1','2','3'];

//composed objects from the ID set
$scope.composedData = [{id:1,name:"test"},{id:2,name:"test"},{id:3,name:"test"}];

<!-- select box -->
<select ng-model="serverDTO" ng-options="item as item.name for item in composedData track by item.id"></select>

就我所知,track by只是帮助Angular内部进行数组排序。选项的值由第一个参数定义(在您的示例中为
)。如果希望它是按id显示的,则应使用
item.id作为items中的item.name

当在对象和模型的ng选项数组中也使用对象时,“跟踪方式”非常有用。但您不希望通过模型中对象的引用来跟踪选项。使用“跟踪方式”可以按模型的所需字段跟踪选项

对于“track by”$scope.serverDTO,必须类似于{id:1,name:“test”}

ng options=“item as item.name for item in composedData track by item.id”>
//recreate proper DTO [1,2,3];
$scope.serverDTO = $scope.serverDTO.map(function(val){
  return val.id;
});