【发布时间】:2015-06-15 22:05:18
【问题描述】:
我有一个可能包含 15-20 个字段的表单。它们中的每一个都包含一个看起来像这样的属性:
ng-class='addressForm.city.$invalid && addressForm.city.$touched ? "error" : ""'
所以我将那长串代码重复了 15-20 次。这让我的 DRY 警钟大放异彩。
我可以设计自己的方法来使这个更干燥,但我不想重新发明轮子。是否有一种普遍接受的方式来保持 Angular 表单验证 DRY?
【问题讨论】:
-
你不能用某种帮手把它包起来吗?
-
您可以在提交事件中检查无效字段,然后您可以将其更改为
ng-class="{'error': addressForm[field-name-here].invalid }" -
@DaveNewton 我想这是一种可能性。接受有关如何进行的建议。
-
@TanaseButcaru 似乎是一种改进,虽然没有我希望的那么大。
-
如果你想让它“实时”(在用户更改值后立即检查字段有效性),你可以添加
ng-change="fieldChanged(field-name-or-id)。此外,ng-class属性应该在那里。这与我的第一个解决方案之间的唯一区别是您在值更改时进行验证,而不是在提交时进行验证。如果要删除ng-class,只需将this传递给fieldChanged函数(这将是元素的实例)并通过angular.element添加/删除类
标签: angularjs validation dry