我正在评估 AngularJS,到目前为止我对它非常感兴趣。但验证方面缺少一些东西:可用选项,例如 built-in mechanisms和 AngularUI initiative ,通过指令实现验证器,因此,每个验证都应该在 View 中声明:
<form ng-controller="SomeController">
<!-- Notice the 'required' attribute directive below: -->
<input type="text" ng-model="user.name" name="uName" required />
</form>
在此示例中, View 定义 user.name
是必需的。这就像说 View 定义了模型的正确形状。是不是有点落后了? View 不应该反射(reflect)状态,包括错误状态吗?
我错了吗?我想知道是否可以在 Controller 中应用任何验证器,将模型的数据标记为有效/无效,并相应地更新 View (用红色绘制表单控件,显示错误消息,清除以前的错误等等)。我假设 AngularJS 对此足够强大,但在到目前为止的文档和示例中,我还没有看到像我上面描述的那样的东西。谢谢!
最佳答案
我想这全都与视角有关。我认为,您正在定义一个包含表单的 View ,并且该表单包含文本类型的输入。您根据需要标记的就是这个文本输入。如果你注意到的话,Angular 并不关心文本是 user.name 还是 user.age 或者其他什么。它只是将该文本输入与必需的相关联。因此,它只是验证该文本输入以及与该模型关联的模型就是最终结果(如果验证通过,则该值进入的位置!)。
看看
http://docs.angularjs.org/guide/forms
对于自定义表单验证,如果您想要执行非默认验证。
由于您已经知道提前生成的 View (让我们在编译时调用它!),因此您可以关联 View 中的所有验证器,因此不必在 Controller 中执行此操作(这可能是为了运行-时间验证!)。
关于model-view-controller - AngularJS 的验证策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751638/