AngularJS - 模型不更新选择ng-repeat生成的单选按钮

时间:2013-07-16 11:06:10

标签: angularjs 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/

任何帮助都将不胜感激。

由于

3 个答案:

答案 0 :(得分:97)

<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

答案 1 :(得分:4)

讨论了上述问题here

这是因为ng-repeat创建了一个新的范围。基本上,每个<input>都在自己的内部范围内创建一个selectedOption值。要解决此问题,请为该值创建一个新的容器对象。例如,您可以在控制器中声明:

$scope.data = {selectedOption: x};

然后在您的模板中,使用ng-model="data.selectedOption"

以这种方式,ng-model得到更新.. :)

这很棘手

答案 2 :(得分:2)

只需要用ng-value替换值