我使用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/
任何帮助都将不胜感激。
由于
答案 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替换值