我想验证使用指令生成的动态表单输入并隔离范围。在指令之外,我有主窗体,在ng-repeat内部,我试图使用ng-form,但它不会显示错误消息。最初,我在ng-repeat上使用了ng-form,但认为这是行不通的,因为它超出了指令的范围,所以将它放在指令的父div上,但仍然不显示对无效电子邮件的验证。AngularJS表单验证动态生成的输入指令不与ngForm工作
形式NG-重复和现场指导
<form name="mainForm"
role="form"
ng-controller="WizardFormController as wizFormCtrl"
ng-submit="submit(mainForm.$valid)"
novalidate>
<div ng-repeat="field in panel.form_fields">
<form-field field="field"
model="models[field.field_name]" ng-form="subForm">
</form-field>
</div>
<div class="form-group clearfix">
<button class="btn btn-primary pull-right"
ng-click="update(models)"
ng-disabled="mainForm.$invalid">Save Progress</button>
</div>
</form>
表格字段指令
<div class="form-group" ng-form="subForm">
<label for="{{field.field_name}}">{{field.field_label}}</label>
<input type="text"
class="form-control"
id="{{field.field_id}}"
name="{{field.field_name}}"
ng-model="model">
<div ng-show="subForm[field.field_name].$dirty &&
subForm[field.field_name].$invalid">Invalid:
<span ng-show="subForm[field.field_name].$error.email">This is not a valid email.</span>
</div>
</div>
看起来像它应该工作,寻找在生成的标记指示场NG-有效:
<div class="form-group ng-scope ng-dirty ng-valid-required ng-valid ng-valid-email"
ng-form="subForm">
它是我如何访问子表单:
subForm[field.field_name].$dirty
UPDATE 我发现周围的工作,这和下面回答了这个问题,看here
你可以发布你的指令JS代码以及演示fiddler/plnkr吗? – Beyers 2014-09-03 21:51:02