AngularJS 中的验证策略

7
我正在评估AngularJS,到目前为止我对它非常热情。但是在验证方面还有一些缺失:可用选项,如内置机制AngularUI倡议,通过指令实现验证,因此每个验证都应在视图中声明:
<form ng-controller="SomeController">
    <!-- Notice the 'required' attribute directive below: -->
    <input type="text" ng-model="user.name" name="uName" required />
</form>

在这个例子中,视图(view)定义了user.name是必需的。这就像是说视图定义了模型的正确形状。这不是有点倒过来了吗?视图难道不应该反映状态,包括错误状态吗?
我弄错了吗?我想知道是否可能在控制器中应用任何验证器,将模型的数据标记为有效/无效,并相应地更新视图(用红色涂抹表单控件、显示错误消息、清除以前的错误等)。我假设AngularJS足够强大,能够实现这一点,但在文档和示例中,我还没有看到类似我上面描述的内容。谢谢!

"required" 是一个 HTML5 属性。http://html5doctor.com/html5-forms-introduction-and-new-attributes/ 此外,您可以将 "input" 的 "type" 属性设置为 "email、tel、date、url、number" 等内容,它们会相应地进行验证。 - m.e.conroy
此外,我从未使用过AngularUI Validate,我只是使用了纯AngularJS验证和HTML5,它完美地工作。AngularUI Validate用于向字段添加自定义表达式验证。 - m.e.conroy
1个回答

1
我想这一切都取决于观点。在我看来,您正在定义一个包含表单的视图,该表单包含一个文本类型的输入。正是这个文本输入被标记为必填项。如果您注意到,Angular并不关心文本是user.name还是user.age或其他任何内容。它只是将该文本输入与必填项相关联。因此,它只验证该文本输入和与该模型相关联的模型是最终结果(如果验证通过,则值进入的位置!)。
请看

http://docs.angularjs.org/guide/forms

对于自定义表单验证,如果您想要执行非默认验证,则可以这样做。

由于您已经预先知道正在生成的视图(让我们称其为编译时!),因此可以将所有验证器与视图关联起来,因此不必在控制器中执行此操作(这可能是用于运行时验证!)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接