Select 与 ng-model 和 ng-options 绑定时不选择
Select not selecting when binding with ng-model and ng-options
这是我的 select:
<select class="form-control" ng-options="assistanceType as assistanceType.name for assistanceType in assistanceTypes" ng-model="selectedRecord.assistanceType"></select>
这是我用来加载辅助类型的内容:
$scope.getAssistanceTypes = function () {
$http.get('/api/assistanceType/getAll').
success(function (data, status, headers, config) {
$scope.assistanceTypes = data;
}).
error(function (data, status, headers, config) {
alert(data.ExceptionMessage);
});
}
结果如下:
[
{
"assistanceTypeId": 1,
"name": "Essay"
},
{
"assistanceTypeId": 2,
"name": "Resume"
},
{
"assistanceTypeId": 3,
"name": "Test"
}
]
一切正常,我可以在更改选项时看到模型正在更新。
但是当我加载记录($scope.selectedRecord)时,selected 选项没有反映 assistanceType 对象!
这是"selectedRecord":
{
"recordId": 1,
"student": {
"id": "xxx",
"firstName": "xxx",
"lastName": "xxx"
},
"createDate": "2015-03-04T15:35:40",
"closeDate": "2015-03-04T15:35:40",
"checkInDate": "2015-03-04T15:35:40",
"checkOutDate": "2015-03-04T15:35:40",
"consultant": {
"id": "xxx",
"firstName": "xxx",
"lastName": "xxx"
},
"assistanceType": {
"assistanceTypeId": 1,
"name": "Essay"
},
"course": {
"course": "xxx",
"name": "xxx",
"teacher": {
"id": "xxx",
"firstName": "xxx",
"lastName": "xxx"
}
},
"format": null,
"classStanding": null,
"comment": "Nothing here!"
}
我是 AngularJS 的新手,我很可能在这里遗漏了一些东西。但在我看来,在我加载主记录的那一刻,select 应该填充 selectedRecord.assistanceType.
中的对象
有什么建议吗?
谢谢!
问题是 selectedRecord 中的 "assistanceType" 对象与 assistanceTypes 数组中的等效对象不完全相同。
试试这个:
<select class="form-control" ng-options="assistanceType as assistanceType.name for assistanceType in assistanceTypes track by assistanceType.name" ng-model="selectedRecord.assistanceType"></select>
请注意,我添加了 "track by assistanceType.name",这样它将按名称而不是对象的 $$hashkey 进行比较。
Select 元素需要名称属性才能获取模型元素 select,在您的情况下,只需添加名称属性即可。例如姓名="assistanceType"。直到它需要时才需要添加曲目。
这是我的 select:
<select class="form-control" ng-options="assistanceType as assistanceType.name for assistanceType in assistanceTypes" ng-model="selectedRecord.assistanceType"></select>
这是我用来加载辅助类型的内容:
$scope.getAssistanceTypes = function () {
$http.get('/api/assistanceType/getAll').
success(function (data, status, headers, config) {
$scope.assistanceTypes = data;
}).
error(function (data, status, headers, config) {
alert(data.ExceptionMessage);
});
}
结果如下:
[
{
"assistanceTypeId": 1,
"name": "Essay"
},
{
"assistanceTypeId": 2,
"name": "Resume"
},
{
"assistanceTypeId": 3,
"name": "Test"
}
]
一切正常,我可以在更改选项时看到模型正在更新。
但是当我加载记录($scope.selectedRecord)时,selected 选项没有反映 assistanceType 对象!
这是"selectedRecord":
{
"recordId": 1,
"student": {
"id": "xxx",
"firstName": "xxx",
"lastName": "xxx"
},
"createDate": "2015-03-04T15:35:40",
"closeDate": "2015-03-04T15:35:40",
"checkInDate": "2015-03-04T15:35:40",
"checkOutDate": "2015-03-04T15:35:40",
"consultant": {
"id": "xxx",
"firstName": "xxx",
"lastName": "xxx"
},
"assistanceType": {
"assistanceTypeId": 1,
"name": "Essay"
},
"course": {
"course": "xxx",
"name": "xxx",
"teacher": {
"id": "xxx",
"firstName": "xxx",
"lastName": "xxx"
}
},
"format": null,
"classStanding": null,
"comment": "Nothing here!"
}
我是 AngularJS 的新手,我很可能在这里遗漏了一些东西。但在我看来,在我加载主记录的那一刻,select 应该填充 selectedRecord.assistanceType.
中的对象有什么建议吗?
谢谢!
问题是 selectedRecord 中的 "assistanceType" 对象与 assistanceTypes 数组中的等效对象不完全相同。 试试这个:
<select class="form-control" ng-options="assistanceType as assistanceType.name for assistanceType in assistanceTypes track by assistanceType.name" ng-model="selectedRecord.assistanceType"></select>
请注意,我添加了 "track by assistanceType.name",这样它将按名称而不是对象的 $$hashkey 进行比较。
Select 元素需要名称属性才能获取模型元素 select,在您的情况下,只需添加名称属性即可。例如姓名="assistanceType"。直到它需要时才需要添加曲目。