2015-02-24 2 views
1

Я сделал простой angular.js пример, который показывает мою проблему: exampleзначение запуска не устанавливает выбранное значение

Я хочу, чтобы установить начальное значение выбора элемента к определенному значению.

<select name="i" id="i" ng-model="selectedItem"> 
     <option ng-repeat="i in items" value="{{i}}">{{i}}</option> 
    </select> 

Параметры и элемент выбора получаются отлично. Но, как и в примере, когда я устанавливаю значение в моем контроллере равным 6, выбранное значение на странице все еще является первым элементом.

scope.selectedItem = 6; 

Есть две простые кнопки, которые просто изменяют выбранное значение. Когда вы нажимаете на них, выбор меняется без проблем.

EDIT: я обновил jsfiddle и удалить неиспользуемый код и переименовал код, чтобы сделать вещи немного более ясно

EDIT2: Я пропустил, чтобы спросить, если это возможно исправить второй элемент выбора тоже? Другое дело, что этот массив содержит объекты вместо чисел.

<select name="o" id="o" ng-model="selectedItem"> 
     <option ng-repeat="o in objects" ng-value="{{o.ID}}">{{o.Text}}</option> 
    </select> 
+0

Переменная сферы - '$ scope', а не' scope'. –

+0

@JimCote i переименован в зависимость –

+0

Ваша скрипка использует 'scope' всюду по контроллеру. –

ответ

2

Вы не должны использовать ngRepeat для отображения опций элементов, он не должен правильно работать с выбором и опциями. Используйте ngOptions, который будет работать как с ngModel:

<select name="i" id="i" 
     ng-model="selectedItem" 
     ng-options="i for i in items"> 
</select> 

Для второго переключателя, который имеет ngModel связанно с ID свойства объектов в массиве, то это будет:

<select name="o" id="o" 
     ng-model="selectedItem" 
     ng-options="obj.ID as obj.Text for obj in objects"> 
</select> 

Демо:http://jsfiddle.net/d3jf7ueq/9/

+0

Спасибо. Это работает отлично. На данный момент я не знаю почему, но я буду читать документацию ngOptions. –

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