选择不与ng-model和ng-options绑定时选择

Nan*_*ner 3 javascript select angularjs ng-options angular-ngmodel

这是我的选择:

<select class="form-control" ng-options="assistanceType as assistanceType.name for assistanceType in assistanceTypes" ng-model="selectedRecord.assistanceType"></select>
Run Code Online (Sandbox Code Playgroud)

这是我用来加载援助类型的内容:

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

这是结果:

    [
  {
    "assistanceTypeId": 1,
    "name": "Essay"
  },
  {
    "assistanceTypeId": 2,
    "name": "Resume"
  },
  {
    "assistanceTypeId": 3,
    "name": "Test"
  }
]
Run Code Online (Sandbox Code Playgroud)

一切正常,我可以在更改选项时看到模型正在更新.

但是当我加载记录($ scope.selectedRecord)时,所选选项不会反映aidType对象!

这是"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!"
}
Run Code Online (Sandbox Code Playgroud)

我是AngularJS的新手,我很可能在这里遗漏了一些东西.但是在我看来,在我加载主记录时,select应该填充selectedRecord.assistanceType中的对象.

有什么建议?

谢谢!

Han*_*pio 15

问题是selectedRecord中的"assistanceType"对象与aidTypes数组中的等效实例不完全相同.试试这个:

<select class="form-control" ng-options="assistanceType as assistanceType.name for assistanceType in assistanceTypes track by assistanceType.name" ng-model="selectedRecord.assistanceType"></select>
Run Code Online (Sandbox Code Playgroud)

请注意,我添加了"track by aidType.name",以便它将按名称而不是对象的$$ hashkey进行比较.