Подтвердить что ты не робот

AngularJS - Модель не обновляется при выборе переключателя, созданного ng-repeat

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

Такая же разметка работает очень хорошо, когда радиовходы жестко закодированы, а не генерируются ng-repeat.

Это работает:

<input type="radio" ng-model="lunch" value="chicken" name="lunch">
<input type="radio" ng-model="lunch" value="beef" name="lunch">
<input type="radio" ng-model="lunch" value="fish" name="lunch">  
{{lunch}}

Это не означает:

<input type="radio" ng-model="lunch" ng-repeat="m in meat" value="m" name="lunch">    
{{lunch}}

См. jsfiddle, показывающий оба здесь: http://jsfiddle.net/mark_up/A2qCS/1/

Любая помощь будет оценена.

Спасибо

4b9b3361

Ответ 1

<div ng-controller="DynamicCtrl">
    <input type="radio" ng-model="$parent.lunch" ng-repeat="m in meat"  
    ng-value="m" name="lunch">    
    {{lunch}}
</div>

Должен сделать трюк.

Как я понимаю, ng-repeat создает свой собственный $scope. поэтому вам нужно обратиться к $parent $scope; Да, функция AngularJS сложна. Также вам нужно также изменить value на ng-value.

Ответ 2

вышеупомянутый вопрос обсуждался здесь

Это происходит потому, что ng-repeat создает новую область. В принципе, каждый <input> создает значение selectedOption в своей собственной внутренней области. Чтобы обойти это, создайте новый объект-контейнер для этого значения. Например, вы можете объявить в своем контроллере:

$scope.data = {selectedOption: x};

И затем в шаблоне используйте ng-model="data.selectedOption"

таким образом обновляется ng-модель..:)

Это сложно [/p >

Ответ 3

Просто нужно заменить значение на ng-value