2013-06-20 4 views
3

В настоящее время я пытаюсь загрузить selectbox с помощью директивы ng-options.NG-Options не позволяет мне установить значение

Однако я не могу изменить значение созданных параметров, оно просто идет от 0-3, в то время как я хочу, чтобы эти значения были идентичны «eigenschap_id», через которые я проходил.

Так оно и должно иметь значения от 23-26 вместо 0-3

Где это пойти не так?

Вот код, который я использую.

Контроллер:

$scope.eigenschappen.game = categories.Game; 

Jsonstring/объект:

[{"cat_id":6,"cat_name":"Game","eigenschap_name":"RPG","eigenschap_id":23},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Strategie","eigenschap_id":24},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Avontuur","eigenschap_id":25},{"cat_id":6,"cat_name":"Game","eigenschap_name":"Simulatie","eigenschap_id":26}] 

Html Посмотреть

<select data-ng-options="i.eigenschap_id as i.eigenschap_name for i in eigenschappen.game" ng-model="chosen"></select> 

Сгенерированный HTML

<select ng-model="chosen" data-ng-options="i.eigenschap_id as i.eigenschap_name for i in eigenschappen.game" class="ng-pristine ng-valid"> 
    <option value="?" selected="selected"></option> 
    <option value="0">RPG</option> 
    <option value="1">Strategie</option> 
    <option value="2">Avontuur</option> 
    <option value="3">Simulatie</option> 
</select> 

ответ

8

Когда Angular генерирует опции выбора HTML, атрибут value (каждого элемента опции) может быть не таким, как вы ожидаете ... он устанавливается следующим образом: . при использовании массива в качестве источника данных значение устанавливается на индекс массива . при использовании объекта в качестве источника данных значение устанавливается на имя ключа/свойства

Когда пользователь выбирает один из параметров, Angular использует индекс (или ключ) для поиска значения в массиве (или объекте) - - эта искаженная ценность - это то, на что настроена модель. (Таким образом, модель не настроена на значение, которое вы видите в HTML! Это вызывает много путаницы.)

Например, для источника данных массива Angular установит значение модели в значение в массиве на индекс, указанный параметром значения выбранного параметра. Если ваш массив источников данных [2013, 2014, 2015], сгенерированный HTML будет иметь значения 0, 1, 2 для элементов опций. При выборе 2-й элемент, Угловое выглядит в массиве [1], чтобы найти значение 2014, которое является то, что модель затем устанавливается на

Источник: Марк RajCok комментарий на http://docs.angularjs.org/api/ng.directive:select

+0

Ключевой факт, что я никогда не знал заключается в том, что значение не имеет отношения к тому, что модель действительно будет удерживать. Если вы сомневаетесь, вы можете отобразить значение модели select на экране с помощью {{the_selects_model}}. Благодарю. –

Смежные вопросы