我的用例:
我有一个使用 ui-router 的多步骤表单,如下面的 plunkr 所示。我使用 ng-form 来验证 AngularJS 提供的信息,例如 $valid、$dirty 等。
每次单击“下一部分”按钮后,我将表单数据发送到服务器以检索它,以防用户在完成之前退出表单。
如果用户两次提交第一步,我只发送编辑后的数据(如果 $dirty 值为 true)。所有这些都不在 plunkr 中,我选择向您展示一个简单的表单,但我的表单可以包含一百个字段(单选、复选框、输入、选择等)。
重现问题的步骤(plunkr):
- 填写步骤 1 并转到下一部分
- 选中 Xbox 收音机并单击数字返回第 1 步
myMultiStepForm.interests.xbox.$dirty = true
- 回到第 2 步
myMultiStepForm.interests.xbox.$dirty = false
为什么 $dirty 值改为 false?我猜这是因为<ng-form>
再次显示并且所有验证数据都被重置。
有没有办法避免这种情况?或者可能不是<ng-form>
处理字段子集的验证?
这是 plunkr:http ://plnkr.co/edit/WclqVgiBvUXlsGdSCcj0?p=preview