directive from

实例化FormController指令。

如果指定了name属性,那么表单控制器就会在这个名称下面的当前作用域上发布。

别名:ngForm

  在AngularJS中,表单可以嵌套。这意味着当所有的子表单都有效时,外部表单是有效的。但是,浏览器不允许嵌套元素,所以AngularJS提供了ngForm指令,它的行为与表单相同,但可以嵌套。如果需要确定一个子组的有效性,嵌套的表单可能是有用的。

CSS classes:

  ng-valid:设置表单可用
  ng-invalid:设置表单不可用
  ng-pending:设置表单暂挂
  ng-pristine:设置成原始表单
  ng-dirty:设置表单脏值检查
  ng-submitted:设置表单的提交

提交表单并防止默认动作:

  由于表单在客户端AngularJS应用程序中的角色不同于传统的往返应用程序,因此浏览器不需要将表单提交转换为将数据发送到服务器后重新加载页面。相反,应该触发一些javascript逻辑以特定于应用程序的方式来处理表单提交。

  由于这个原因,AngularJS阻止了默认动作(表单提交到服务器),除非<form>元素的属性指定了一个动作属性。

  您可以使用以下两种方法中的一种来指定在提交表单时应该调用什么javascript方法:

    表单元素的ngSubmit指令

    在输入的第一个按钮或输入域上的ngClick指令(input[type=submit])

  为了防止处理程序的双重执行,使用ngSubmit或ngClick指令的其中一个。这是因为HTML规范中的以下表单提交规则:

    如果表单只有一个输入字段,那么在该字段中输入enter触发表单提交(ngSubmit)

    如果表单有2+输入字段,没有按钮或input[type=submit],那么按回车键就不会触发提交

    如果表单有一个或多个输入字段,一个或多个按钮input[type=submit],那么在任何输入字段中单击enter都会触发第一个按钮上的单击处理程序,或input[type=submit](ngClick)和一个提交处理程序(ngSubmit)。

  任何待定的ngModelOptions更改将在提交一个封闭的表单时立即进行。注意,在更新模型之前,会出现ngClick事件。使用ngSubmit来访问更新后的模型。

Animation Hooks:

  当添加和删除相关的CSS类时,就会触发ngForm中的动画。这些类有:ng-pristine、ng-dirty、ng-invalid和ng-valid,以及在表单中执行的任何其他验证。在ngForm上的动画与他们在ngClass中的工作很相似,动画也可以用CSS转换、关键帧和JS动画来连接。