【问题标题】:Validation strategies with AngularJSAngularJS 的验证策略
【发布时间】:2012-09-26 22:16:02
【问题描述】:

我正在评估 AngularJS,到目前为止我对此非常感兴趣。但是在验证方面缺少一些东西:可用的选项,例如 built-in mechanismsAngularUI initiative,通过指令实现验证器,因此,每个验证都应该在视图中声明:

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

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

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

【问题讨论】:

  • required 是一个 HTML5 属性。 html5doctor.com/html5-forms-introduction-and-new-attributes 您也可以将input type 属性设置为email,tel,date,url,number 之类的东西,它们会相应地进行验证。
  • 另外,我从未使用过 AngularUI 验证,我只是使用 HTML5 的直接 AngularJS 验证,它工作得非常好。 AngularUI Validate 用于向字段添加自定义表达式验证。

标签: model-view-controller validation angularjs


【解决方案1】:

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

看看

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

对于自定义表单验证,如果您想要进行非默认验证。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2020-07-03
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多