带有ng-model和ng-repeat的多组单选按钮

时间:2016-09-28 09:27:30

标签: angularjs radio-button angularjs-ng-repeat angular-ngmodel laravel-blade

我对Angular很新,我在单选按钮上设置默认选项时遇到了一些问题。我已经检查了其他答案,使用$parent无法解决我的问题,或者我使用错了。

我有一组单选按钮,其中包含2个输入:

input type="radio" name="@{{ form.form_id }}_@{{ $index }}" ng-model="$parent.field.field_data.suggested" value="@{{ field.field_data.value_a}}" > @{{ field.field_data.value_a }} <br>
input type="radio" name="@{{ form.form_id }}_@{{ $index }}" ng-model="$parent.field.field_data.suggested" value="@{{ field.field_data.value_b }}"> @{{ field.field_data.value_b }}

如果页面仅显示1组(对)单选按钮,则它会正确设置单选按钮组的默认值。这里的问题是,当ng-repeat生成3组(3对)单选按钮时,它只设置最后一组单选按钮的值,而其他2组保持未选中或空白。

这是因为单选按钮是使用2 ng重复生成的吗?为了帮助,这是我的代码。

我有一个数组$scope.filtered_forms,它由:

设置
$scope.filtered_forms[index] = {
      form_id:id,
      fields:[{
             field_data: {field.label,
                          field_suggested:string,
                          value_a:string,
                          value_b:string},
             field_type: radio
             },{
             field_data: {field.label,
                          field_suggested:string,
                          value_a:string,
                          value_b:string},
             field_type radio
             },{
              ...same input as above each object represents a group of radio
             }]
}

基本上,$scope.filtered_forms包含表单对象。在我的html文件中,我有这个:

<div ng-repeat="form in filtered_forms" id="@{{ form.form_id }}">
 <table class="table" id="borderless">
       <tr ng-repeat="field in form.fields">
              <th scope="row" width="35%">@{{ field.field_data.label }}</th>
                 <td>
                    <div  ng-if="field.field_type == 'radio'" style="margin-bottom: 10px">
                        <input type="radio" name="@{{ form.form_id }}_@{{ $index }}" ng-model="$parent.field.field_data.suggested" value="@{{ field.field_data.value_a}}" > @{{ field.field_data.value_a }} <br>
                        <input type="radio" name="@{{ form.form_id }}_@{{ $index }}" ng-model="$parent.field.field_data.suggested" value="@{{ field.field_data.value_b }}"> @{{ field.field_data.value_b }}
                    </div>
                 </td>
         </tr>
   /table>

此处此处生成2组/对单选按钮,但只有最后一组获得默认值。即使使用ng-checked甚至没有$ parent。

其他信息,field_suggested与value_a或value_b具有相同的值。您可以看到单选按钮低于2 ng重复。我正在使用laravel刀片,这个html文件在一个模态中。我删除了表单中与该问题无关的一些html数据和属性。

感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

你似乎混合了很多东西。我复制了你的代码,创建了一个plunker,发现无线电组的名称实际上并不是form_id _ {{$ index}},而是将整个对象作为字符串。我已经改变了代码希望它可以帮到你。 查看代码here 问题在于你的组名,为什么你在名字中使用@。请删除它们,它应该工作正常。另请注意,name属性的值中没有特殊字符。

name="{{ form.form_id }}_{{ $index }}"