Я создал следующий пример, чтобы вы могли точно видеть, что происходит: http://jsfiddle.net/8t2Ln/101/
То же самое происходит, если я использую ng-options. У меня есть другая причина для этого, но для упрощения примера эта часть вышла.
Как вы видите, по умолчанию у него есть два варианта. Я показываю выбранное значение ng-модели рядом с select, чтобы вы могли видеть, что это такое. Когда вы используете верхнюю часть для добавления третьей опции, она устанавливает значение в значение этой новой опции, о чем свидетельствует отображаемое значение ng-модели рядом с выбором, но сам выбор не изменяется, чтобы показать правильное значение выбран.
Ниже приведен пример кода по ссылке:
var testApp = angular.module('testApp', ['ngRoute']);
testApp.controller('Ctrl', function ($scope) {
$scope.newInput = '';
$scope.inputDevice = [
{
value: '1',
label: 'input1'
},
{
value: '2',
label: 'input2'
}
];
$scope.selectedDevice = '';
$scope.addType = function () {
var newElem = {
label: $scope.newInput,
value: '3'
};
$scope.inputDevice.push(newElem);
$scope.selectedDevice = newElem.value;
};
});
И вот html:
<div ng-app="testApp">
<div ng-controller="Ctrl">
<p>
<input type="text" ng-model="newInput" />
<br />
<button ng-click="addType()">Add Type</button>
</p>
<select ng-model="selectedDevice">
<option></option>
<option ng-repeat="i in inputDevice" value="{{ i.value }}">{{ i.label }} - {{ i.value }}</option>
</select>
{{ selectedDevice }}</div>
</div>