5

我创建了一个plunker

单击“+名称”按钮时,我会动态生成输入元素,每个元素都在 ng-form 中。

如何获取 ng-form 的所有实例来验证每个单独的 ng-form?如果字段无效或创建了新的 ng-form,那么“+ Name”按钮会保持禁用状态吗?

编辑 有关表单结构的更多详细信息

出于简洁的原因,我删除了表单中的其他字段。它基本上是一个很长的形式,比如

<form name="myForm">
     <input name="one" />
     .
     .
     <div ng-repeat....>
         <ng-form>
            <input name="schoolName" />
         </ng-form>
     </div>
    <button>+ Name</button>  <!-- I cannot check for myForm.$valid here-->
    <!-- since the person might not filled the rest of the below fields -->
     <!-- hence the need to grab "each" "ng-form" --> 
    <input name="some" />
    <input name="other" />        
</form>
4

1 回答 1

7

1)http://docs.angularjs.org/api/ng.directive:form说:

在角度形式可以嵌套。这意味着当所有子表单都有效时,外部表单也有效。

因此,只有当所有子表格都有效时,您的主表格才有效。

2)如果你想/需要在主窗体中引用子窗体控制器,你需要使用自定义指令。

我更新了你的代码: http: //plnkr.co/edit/Vvz6VXJUj4lF0NR9gjjL

  • script.js 包含 2 个指令:“mainForm”和“childForm”,它们向您展示了它们如何交互
  • index.html 中的“结果”部分显示“mainForm”何时有效。正如你所看到的,它证实了 Angular.js 文档所说的
于 2013-09-04T21:49:24.263 回答