Model view controller 使用AngularJS的验证策略

Model view controller 使用AngularJS的验证策略,model-view-controller,validation,angularjs,Model View Controller,Validation,Angularjs,我正在评估AngularJS,到目前为止我对它非常热情。但是在验证方面还缺少一些东西:可用的选项,如和,通过指令实现验证器,因此,每个验证都应该在视图中声明: <form ng-controller="SomeController"> <!-- Notice the 'required' attribute directive below: --> <input type="text" ng-model="user.name" name="uName

我正在评估AngularJS,到目前为止我对它非常热情。但是在验证方面还缺少一些东西:可用的选项,如和,通过指令实现验证器,因此,每个验证都应该在视图中声明:

<form ng-controller="SomeController">
    <!-- Notice the 'required' attribute directive below: -->
    <input type="text" ng-model="user.name" name="uName" required />
</form>

在本例中,视图定义需要
user.name
。这就像说视图定义了模型的正确形状。这不是有点倒退吗?视图不应该反映状态,包括错误状态吗


我弄错了吗?我想知道是否可以在控制器中应用任何验证器,将模型数据表示为有效/无效,并相应地更新视图(用红色绘制表单控件,显示错误消息,清除以前的错误等等)。我假设AngularJS足够强大,但在文档和示例中,到目前为止,我还没有看到像上面所述的任何东西。谢谢

我想这都是关于透视的。在我看来,您正在定义一个视图,该视图包含一个表单,该表单包含一个文本类型的输入。您正根据需要标记此文本输入。如果您注意到,angular不关心文本是user.name还是user.age或其他任何内容。它只是将文本输入与required关联起来。因此,它只是验证文本输入和与该模型关联的模型是最终结果(如果验证通过,则值进入的位置!)

看看

对于自定义表单验证,如果要执行非默认的验证


由于您已经知道将提前生成的视图(让我们在编译时调用它!),因此您可以关联视图中的所有验证器,因此不必在控制器中执行此操作(这可能是为了运行时验证!)。

必需的
是HTML5属性。你也可以将
input
type
属性设置为
电子邮件、电话、日期、url、号码等,它们将相应地进行验证。此外,我从未使用过AngularUI验证,我只是使用了HTML5的直接AngularJS验证,效果非常好。AngularUI验证用于向字段添加自定义表达式验证。