Javascript ngOptions";按“跟踪”;表达
我试图使用“track by”表达式在对象数组中按id跟踪选择。然而,我似乎无法让它像我认为的那样工作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 --> &
//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;
});