2012-10-05 34 views
7

我正在评估AngularJS,至今我对此非常感兴趣。但是,有一些失踪前端验证:可用的选项,如built-in mechanismsAngularUI initiative,通过指令执行校验和,因此,每个验证应该在视图中宣称: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对此足够强大,但在目前为止的文档和示例中,我只是没有看到像上面描述的任何内容。谢谢!

+0

'required'是一个HTML5属性。 http://html5doctor.com/html5-forms-introduction-and-new-attributes/您还可以将'input'' type'属性设置为'email,tel,date,url,number'等东西,然后他们会验证因此。 –

+0

另外我从来没有使用过AngularUI Validate,我刚刚使用了直接了当的HTML5的AngularJS验证,它的工作非常好。 AngularUI Validate用于将自定义表达式验证添加到字段。 –

回答

1

我想它的一切有关透视。我看到的方式是,您正在定义一个包含表单的视图,并且该表单包含文本类型的输入。正是您根据需要标记的是此文本输入。如果你注意到,角度不关心,如果文本是user.name或user.age或其他任何。它只是将文本输入与必需的相关联。所以它只是验证文本输入和与该模型关联的模型是最终结果(如果验证通过,则值进入的地方!)。

看一看

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

自定义表单验证,如果你想在做的是不是默认的验证。因为你已经知道提前产生的视图(让我们在编译时调用它!),你可以关联视图中的所有验证器,因此不必在控制器中执行它(这可能是为了运行时间验证!)。