带有收音机盒的ng-repeat没有在更改时触发

时间:2017-01-01 16:53:18

标签: javascript angularjs

不确定发生了什么。我想在更改时触发一个函数并将obj传递给它。据我所知,因为它绑定到选定的obj所以我可以使用ng-model。但在这种情况下,当我切换单选按钮时没有任何改变。

 <label ng-repeat="obj in dayGroups">
        <input ng-model="selectedDayGroup" type="radio" name="dayGroups"> {{obj.name}}
      </label>

<!-- nothing happens -->
{{selectedDayGroup}}

//init
$scope.selectedDayGroup = null;

http://jsfiddle.net/a5rL8cda/

2 个答案:

答案 0 :(得分:3)

您可以使用valueng-value。此外,由于您正在进行重复操作,因此您必须使用$parent来达到您想要的范围:

<body ng-controller="Channels">
  <label ng-repeat="obj in dayGroups">
    <input ng-model="$parent.selectedDayGroup" type="radio" name="dayGroups" ng-value="obj"> {{obj.name}}
  </label>

  {{selectedDayGroup}}
</body>

http://jsfiddle.net/ud0gcpro/

答案 1 :(得分:0)

NG-Repeat创建一个独立的范围,因此您无法像这样更改外部控制器范围变量。

您可以使用$ parent显式选择外部范围变量,也可以使用controller-as语法显式选择外部范围。我更喜欢后者。

正如其他人所说,使用ng-value或value(仅限字符串)作为输入。