2013-07-25 17 views
6

Aşağıdaki gibi ng-yinelemeyi kullanarak iç içe geçmiş bir form oluşturmak istiyorum. Giriş alanlarım gerekli olduğundan, bir sonraki satırda şu gibi bir hata mesajı eklemek istiyorum: <span ng-show="submitted && editableForm.[e.name].$error.required" class="error">Required field</span>, bunun yanlış olduğunu biliyorum "editableForm. [E.name]. $ Error.required", doğru olan nedir Bunu yapmanın yolu?Angularjs iç içe form giriş onayı ng-repeat

GÜNCELLEME Sadece <ng-form name="rowForm"> ekleyerek çalıştı ama bir kod gömmek adı özelliğini kullanmak bu sadece çalışır, benim durumumda bu dinamik

[e.name] oluşturulur

Teşekkür Leo

NESTED dinamik isme kaçış ekleyerek çözüldü FORMU

<form name="editableForm" novalidate="novalidate"><div class="newEditable"> 
    <ul ng-repeat="row in newRows"> 
    <li ng-repeat="e in rowAttrs"> 
    <input type="text" ng-model="newRows[e.name]" name="e.name" ng-required="e.required"> 
    </li> 
    <li><a href="" ng-click="rm_row($index)">x</li> 
    </ul> 
    </div><a href="" ng-click="newRow()">{{add}}</a> 
    <a ng-show="newRows.length > 0" ng-click="saveIt(editableForm)">{{save}}</a> 
</form> 

cevap

10

:

<ul ng-repeat="row in newRows" ng-form="innerForm"> 

Artık vurgulamak için orijinal çözüm ile benzer bir şey yapabilirsiniz gereken alan:

<div class="validation_error" ng-show="e.required && innerForm['\{\{e.name\}\}'].$error.required"> 
    Required 
</div> 
+0

İçimdeki form formlarını dinamik olarak oluşturmak için yanıtımda açıklanan çözümü kullandım ve doğrulama formunun içerdiği formata iletilmesini sağlayın, örneğin dinamik olarak oluşturulmuş form alanlarından herhangi biri gerekliyse, kullanıcının göndermeyi tıklayamaması gerekir ve geçerli bir değere sahip değil. –

4

, jsfiddle.net/langdonx/6H8Xx/2

ayrıca ilk ng-repeat bir ng-form öznitelik eklemek gerekir bu özel kod Örneğin Kod

<div class="validation_error" ng-show="e.required && rowForm['\{\{e.name\}\}'].$error.required"> 
    Required 
</div> 
+1

Gerçekte burada olan şey sizsiniz Bir rowForm. {{e.name}} dinamik olmayan özellik. Mülkün gerçek adı {{e.name}} 'dır, bu yüzden kaçmak işe yaramaktadır. Senin jsfiddle da "form" adı verilen bir iç formu oluşturan doğru düzeltmeye sahip. Her iç formun bir {{e.name}} özelliği vardır, ancak bunlar dinamik özellikler değildir. Burada {{e.name}} alan adını 'field' http://jsfiddle.net/6H8Xx/270/ olarak değiştirerek çalışabilirsiniz. –