Привязать один атрибут массива ng-options

У меня есть следующий массив:

[{code: "AF", name: "Afghanistan"}, {code: "ZA", name: "South Africa"}, {code: "AL", name: "Albania"}]

У меня есть выбор, и я хотел бы привязать свою ng-модель только к атрибуту кода выбранного объекта, а не ко всему объекту. Но с другой стороны, я бы хотел, чтобы мой выбор отображал только имя (а не код). Кроме того, я хотел бы, чтобы, если я установлю свою ng-модель на код, она предварительно выберет имя в выборе.

Я попробовал следующее (Джейд)

select(ng-model='myCountry', ng-options='country.name for country in countries track by country.name')

Здесь моя ng-модель получает весь объект (myCountry = {code: "AF", name: "Афганистан"}), а не только код (myCountry = "AF")

Возможно ли это сделать?


person ncohen    schedule 23.06.2014    source источник
comment
возможный дубликат Как установить свойство value в angularjs ng-options?   -  person Julien    schedule 23.06.2014


Ответы (1)


Вы можете использовать:

  <div>
    <select ng-model="country" ng-options="country.code as country.name for country in countries"></select>
    Selected country (ng-model): {{country}}
  </div>

country.code - будет использоваться как атрибут ng-model.

country.name - будет использоваться для отображения элемента в выборе.

Посмотрите демо здесь.

И если вы хотите установить для параметра выбора предварительно выбранное значение, просто используйте модель country для предоставления значения.

person guru    schedule 23.06.2014
comment
Спасибо... но я забыл сказать, что выбор должен быть отсортирован по индексу массива. Вы можете легко добавить это? - person ncohen; 23.06.2014
comment
Эти второе и третье предложения — блестящий чемпион. - person Mathemats; 01.02.2016