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/
Любая помощь будет оценена.
Спасибо
Ответы
Ответ 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