AngularJS: ng-model-options 在提交时绑定表单值不适用于多选
AngularJS: ng-model-options bind form value on Submit doesn't work with multiple selections
我有一个带有三个单选按钮的表单,并在单击提交时延迟绑定到模型。现场示例 here
这在快乐路径场景中工作得很好:
- Select
radio1
> 单击 submit
结果为 radio1
。
但在以下情况下它会中断:
- Select radio1 > 点击提交 > 给出
radio1
- 现在 select
radio2
> 然后 radio3
> 然后单击 submit
。
- 这给出
radio2
而不是 radio3
作为绑定值。
基本上,如果我对单选组进行多项更改,只会捕获 第一个 更改。我如何更改此行为以反映 last 更改?
您必须在 ngModelOptions 中使用 allowInvalid : true 来正确验证,而不是将模型设置为未定义的默认行为。参见 documentation。
<input type="radio" name="radio" value="radio1" ng-model="radioValue" ng-model-options="{updateOn: 'submit', allowInvalid : true}" >
<input type="radio" name="radio" value="radio2" ng-model="radioValue" ng-model-options="{updateOn: 'submit', allowInvalid : true}">
<input type="radio" name="radio" value="radio3" ng-model="radioValue" ng-model-options="{updateOn: 'submit', allowInvalid : true}">
工作的 Plunker Link
我有一个带有三个单选按钮的表单,并在单击提交时延迟绑定到模型。现场示例 here
这在快乐路径场景中工作得很好:
- Select
radio1
> 单击submit
结果为radio1
。
但在以下情况下它会中断:
- Select radio1 > 点击提交 > 给出
radio1
- 现在 select
radio2
> 然后radio3
> 然后单击submit
。 - 这给出
radio2
而不是radio3
作为绑定值。
基本上,如果我对单选组进行多项更改,只会捕获 第一个 更改。我如何更改此行为以反映 last 更改?
您必须在 ngModelOptions 中使用 allowInvalid : true 来正确验证,而不是将模型设置为未定义的默认行为。参见 documentation。
<input type="radio" name="radio" value="radio1" ng-model="radioValue" ng-model-options="{updateOn: 'submit', allowInvalid : true}" >
<input type="radio" name="radio" value="radio2" ng-model="radioValue" ng-model-options="{updateOn: 'submit', allowInvalid : true}">
<input type="radio" name="radio" value="radio3" ng-model="radioValue" ng-model-options="{updateOn: 'submit', allowInvalid : true}">
工作的 Plunker Link