【发布时间】:2016-09-28 19:00:33
【问题描述】:
我是 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-repeats 生成的吗?为了提供帮助,这是我的代码。
我有一个数组$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-repeats。我正在使用 laravel 刀片,这个 html 文件位于模态框内。我删除了表单中与问题无关的一些 html 数据和属性。
感谢任何帮助。
谢谢!
【问题讨论】:
-
查看您的代码我猜在您的第二个 ng-repeat 中,因为您正在为每个索引迭代 form.fields,它将创建两个具有相同名称、型号等的收音机,这就是您想要的吗?
-
@nikhilmehta 是的,它将创建 2 个具有相同名称和型号的收音机,这将是 1 组/一对单选按钮。当我得到 3 组收音机时,默认情况下只会设置最后一组。
标签: angularjs radio-button angularjs-ng-repeat angular-ngmodel laravel-blade