Выберите не выбирать при привязке с помощью ng-model и ng-options

Вот мой выбор:

<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), выбранная опция не отражает объект AssistanceType!

Вот «выбранная запись»:

{
  "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, и я вполне мог что-то здесь упустить. Но мне кажется, что в тот момент, когда я загружаю основную запись, выбор должен заполниться объектом в selectedRecord.assistanceType.

Какие-либо предложения?

Благодарю вас!


person Naner    schedule 04.03.2015    source источник


Ответы (2)


Проблема в том, что объект «assistanceType» в selectedRecord не является точно таким же экземпляром своего эквивалента в массиве AssistanceTypes. Попробуй это:

<select class="form-control" ng-options="assistanceType as assistanceType.name for assistanceType in assistanceTypes track by assistanceType.name" ng-model="selectedRecord.assistanceType"></select>

Обратите внимание, что я добавил «отслеживать по helpType.name», чтобы они сравнивались по имени, а не по $$hashkey объекта.

person HankScorpio    schedule 04.03.2015

Для выбора элемента требуется атрибут имени, чтобы выбрать элемент модели, в вашем случае просто добавьте атрибут имени. Например, имя = "Тип помощи". Нет необходимости добавлять трек, пока он не потребуется.

person nitinsingh9x    schedule 24.05.2019