我想驗證使用指令生成的動態表單輸入並隔離範圍。在指令之外,我有主窗體,在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