在我的离子项目中,我有一个<select>
,如此:
<select ng-model="user.bloodType" ng-options="x as x.description for x in formData.bloodTypes"></select>
所以要澄清一下,user.bloodType
是一个看起来像这样的对象:
{
'id' : 1,
'description' : 'O+'
}
formData.bloodTypes
包含上面描述的bloodType
对象的数组。所以这就出现了问题 - 我知道user.bloodType
绝对是formData.bloodTypes
中的对象之一。如何将<select>
设置为user.bloodType
上预先选择的{{1}}?
答案 0 :(得分:6)
如果您没有使用引用相等性将ngModel设置为其中一个选项,则可以使用track by
表达式依赖基于id的相等性(每个选项的id应该是唯一的):
ng-options="x as x.description for x in formData.bloodTypes track by x.id"
然后您的ngModel user.bloodType可以初始化为其引用不一定匹配的模型。
例如:
<select ng-model="selectedOption" ng-options="x
as x.description for x in bloodTypes track by x.id>
控制器:
app.controller('ctrl', function($scope) {
$scope.bloodTypes = [
{'id' : 1, 'description' : 'O+'},
{'id' : 2, 'description' : 'A'},
{'id' : 3, 'description' : 'B'},
];
// set initial selected option to blood type B
$scope.selectedOption = {'id' : 3, 'description' : 'B'};
});
或者,如果您想保持参考平等,则不需要跟踪:
app.controller('ctrl', function($scope) {
$scope.bloodTypes = [
{'id' : 1, 'description' : 'O+'},
{'id' : 2, 'description' : 'A'},
{'id' : 3, 'description' : 'B'},
];
// set initial selected option to blood type B
$scope.selectedOption = $scope.bloodTypes[2];
});