У меня проблема с отображением предварительно выбранного значения в качестве выбранного параметра в моем элементе выбора. Здесь идет код

<select ng-model="data.company" ng-options="company as company.name for company in companies"></select>


$scope.companies =[{
    id:1,
    name:"Company 1"
},
{
    id:2,
    name:"Company 2"
}];

$scope.data = {
    company:{
        id:2,
        name:"Company 2"
    }
}

Проблема в том, что когда я вхожу в раздел, выбор дает мне пустую опцию, поскольку по умолчанию вместо меня отображается «Компания 2». Что я делаю не так?

1
lfelisiak 14 Дек 2015 в 23:40

3 ответа

Лучший ответ

Вам необходимо использовать {{ X0}} в этом случае, так как вы присваиваете значение объекта непосредственно ng-model. В этом случае происходит следующее: когда вы связываете объект напрямую с треком data.company (модель ng) по выражению, проверяет company.id в этом ng-model с каждым идентификатором элемента companies. Если какой-либо из них совпадает, предварительно выберите этот вход.

Разметка

<select ng-model="data.company" 
   ng-options="company as company.name for company in companies track by company.id">
</select>

Демо Plunker

1
Pankaj Parkar 14 Дек 2015 в 21:05

Попробуйте вместо этого

 <select ng-model="data.company" ng-options="company.name for company in companies"></select>

  $scope.data = {
      company: $scope.companies[1];
  };

Вы хотите, чтобы значение, отображаемое в раскрывающемся списке, было названием компании, а сохраненный объект - компанией.

0
Scott 14 Дек 2015 в 21:15

Вы можете попробовать использовать ng-init

<select ng-init="data.company= companies[0]" 
        ng-model="data.company" 
        ng-options="company as company.name for company in companies"></select>
0
Kildareflare 14 Дек 2015 в 20:51