2014-01-16 5 views
3

контроллерУгловая выбрать не работает

$scope.formData = {}; 
$scope.formData.cars = {}; 
$scope.formData.cars.list = [ 
    { id: 1, name: 'vw 2'}, 
    { id: 2, name: 'vw 1'} 
]; 
$scope.formData.cars.selected = $scope.formData.cars.list[0]; 

HTML

<select id="bookingCars" class="form-control" ng-model="formData.cars.selected" ng-options="car.code as car.name for car in formData.cars.list"> 

Может кто-нибудь объяснить, почему это добавляет 3-ий пустой элемент и поэтому первое свойство (vw 2) не значение по умолчанию?

ответ

2

Попробуйте следующее:

ng-options="car as car.name for car in formData.cars.list" 

и он должен работать: plunk.

Вы используете ngOption в форме select as label for value in array. Documentation говорит:

выберите: Результат этого выражения будет связано с моделью родительского элемента. Если не указано, для выражения будет выбрано значение .

Так это означает, что вы хотите, чтобы ваша select части, чтобы быть объектом, однако вы предоставили строку car.code.

1

Вы не должны использовать объект, чтобы установить выбранное значение, потому что вы используете значение «id» вашего автомобиля.

Так что-то вроде этого:

$scope.formData = {}; 
$scope.formData.cars = {}; 
$scope.formData.cars.list = [ 
         { id: 1, name: 'vw 2'}, 
         { id: 2, name: 'vw 1'} 
        ]; 
$scope.formData.cars.selected = $scope.formData.cars.list[1].id; 

<select id="bookingCars" class="form-control" ng-model="formData.cars.selected" ng-options="car.id as car.name for car in formData.cars.list"> 

http://jsfiddle.net/KLDEZ/2/

1

Если вы хотите использовать весь объект в качестве значения следующие будут работать:

{{formData.cars.selected}} -  {{formData.cars.selected.id}} 
<select id="bookingCars" class="form-control" ng-model="formData.cars.selected" 
ng-options="c.name for c in formData.cars.list"> 

http://plnkr.co/edit/QZtEKWeXeHC9kcuEeGNi?p=preview

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