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

Mar*_*son 47 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}}
Run Code Online (Sandbox Code Playgroud)

这不是:

<input type="radio" ng-model="lunch" ng-repeat="m in meat" value="m" name="lunch">    
{{lunch}}
Run Code Online (Sandbox Code Playgroud)

请参阅这里显示的jsfiddle:http://jsfiddle.net/mark_up/A2qCS/1/

任何帮助,将不胜感激.

谢谢

mpm*_*mpm 98

<div ng-controller="DynamicCtrl">
    <input type="radio" ng-model="$parent.lunch" ng-repeat="m in meat"  
    ng-value="m" name="lunch">    
    {{lunch}}
</div>
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.

据我所知,ng-repeat创造了自己的$scope.所以你需要参考$parent $scope;是的,AngularJS很棘手.另外你需要更改valueng-value了.

  • 使用`$ parent`的另一种方法是在控制器中使用对象属性:`$ scope.selection = {lunch:'chicken'};`,然后在HTML中:`<input type ="radio"ng-model ="selection.lunch"ng-repeat ="m in meat"ng-value ="m"name ="lunch"> {{selection.lunch}}` (34认同)
  • @AlokMishra,使用`$ parent`假设某种HTML结构(例如,没有干预`ng-include`或其他可能创建子范围的指令).使用object属性,如果更改HTML,则无需担心代码可能会中断. (2认同)