Angular Formly — выберите ввод с объектом

Посмотрите на следующий jsbin. У меня есть вход select с двумя вариантами (Огайо, Нью-Йорк). В ng-options для выбора я выбираю весь объект, а НЕ только имя или значение ключа. Мне нужны оба.

Когда я выбираю Огайо (например), model правильно обновляет отображение выбранного объекта:

"birthState": {    
    "Key": "1",    
    "Value": "Ohio"  
}

Если я добавлю этот код в model в моем контроллере (установив поле «Огайо» по умолчанию), выбор не отражает эту настройку по умолчанию.

Что я делаю неправильно, что мешает мне задать этому раскрывающемуся списку значение по умолчанию?


person Holt    schedule 18.11.2015    source источник
comment
Я думаю, следующая ссылка может вам помочь. gitter.im/formly-js/angular-formly?at=5571e985777c17d06a1416fd   -  person user4321    schedule 18.11.2015
comment
@ user4321, это близко, но у этого примера есть только имя. Мне нужно получить имя и ключ. Я пытаюсь передать выбранный объект, а не только выбранное имя.   -  person Holt    schedule 18.11.2015
comment
Кажется странным. Я не думаю, что это заслуживает ответа, но вот обходной путь для конкретного случая. Я просто изменил значение по умолчанию Select One в шаблоне выбора в HTML и поместил ключ и значение в модель.   -  person aliigleed    schedule 18.11.2015
comment
Этот обходной путь хорош, пока вы не укажете значение для установки. В этом случае выбор ничего не показывает, и больше нет значения по умолчанию «Выбрать один». Извините, что это не «достойно» вашего времени, чтобы ответить, лол. Ух ты.   -  person Holt    schedule 18.11.2015
comment
@Holt Ха-ха, это двусмысленно. Я имел в виду, что мой обходной путь не достоин рассмотрения в качестве официального ответа. Я попробовал несколько других вещей, но я недостаточно хорош в этом, чтобы дать вам постоянное решение, надеюсь, кто-то еще вмешается.   -  person aliigleed    schedule 19.11.2015


Ответы (1)


Вы не можете выбрать, потому что все объекты будут иметь уникальный идентификатор. объекты в массиве параметров и объект, назначенный в модели (в контроллере), будут отличаться таким образом.

Чтобы добиться того, что вы хотели, попробуйте добавить отслеживание по option.Key в ng-options и назначьте Key для поля «birthState» модели внутри контроллера.

<script type="text/ng-template" id="select.html">
      <select required type="number" ng-model="model[options.key]" ng-options="option.Value for option in to.options track by option.Key">
           <option value="">Select One</option>
      </select>
</script>

внутренний контроллер

vm.model = {
      "birthState": {Key: '3'}
    };
person Sasikumar D.R.    schedule 27.11.2015
comment
Прошу прощения за то, что так долго помечал это как правильный ответ. Добавление опции track by — это именно то, что мне было нужно. - person Holt; 01.02.2016