как получить выбранное значение ng-options внутри ng-repeat в форме

Я пытаюсь получить выбранное значение при нажатии кнопки отправки формы, которая содержит ng-repeat и выбор, сгенерированный ng-options. Но я не могу достичь выбранного значения, не могли бы вы взглянуть на мой код и сказать мне, что мне не хватает?

<form class="form-horizontal">
<!-- Options -->
<div class="product-page-options">
    <div class="form-group clearfix" ng-repeat="option in product.options.data">
        <label class="col-md-4 control-label pull-left">{{ option.name }}</label>
        <div class="col-md-8">
            <select class="form-control" ng-options="value.name for value in option.values.data" ng-model="selectedValue">
                <option value="">Select {{ option.name }}</option>
            </select>
        </div>
    </div>
</div>

<!-- Add to cart -->
<div class="product-page-cart">
<div class="product-quantity">
  <input type="number" value="1" class="form-control input-sm">
</div>
<button class="btn btn-primary" type="submit" ng-click="add(selectedValue)">Add to cart</button>

I have tried to print the selected value by putting

{{ selectedValue }}
inside the ng-repeat div and it display perfectly as expected, however if I try to put it outside of the div then nothing print out.

Данные json, которые я использовал для создания формы здесь http://pastebin.com/nah3Pt5r

// Редактировать:

Я просто погуглил и нашел скрипку, делающую то же, что и я: http://jsfiddle.net/DrQ77/, поэтому я решил чтобы изменить ng-модель на selected[option.name], но $scope.selected по-прежнему показывает undefined.

// Edit 2: Okay, problem solved by adding the

$scope.selected = {};
in the controller.

Спасибо за уделенное время!


person Duong Truong    schedule 21.08.2015    source источник
comment
Это не имеет особого смысла: у вас есть много полей выбора, и вы пытаетесь связать их все с уникальной переменной области видимости selectedValue и добавить () это уникальное выбранное значение. Выбранных значений столько, сколько полей выбора. Чего вы на самом деле хотите достичь?   -  person JB Nizet    schedule 21.08.2015
comment
@JBNizet, мой плохой, я забыл об уникальности модели. Спасибо!   -  person Duong Truong    schedule 21.08.2015


Ответы (1)


Ваш ng-options имеет изолированную область. Итак, внутри selectedValue известно, а снаружи - нет (как вы указываете в своем вопросе).

Определите переменную в своей родительской области и назначьте ее своему ng-model вашего ng-options, и вы сможете получить доступ к этой переменной за пределами ваших ng-options.

person cverb    schedule 21.08.2015