2014-12-16 11 views
22

Jak mogę nazwać formularz wewnątrz ng-repeat z dynamiczną nazwą?Dynamiczna nazwa AngularJs dla formularza wewnątrz ng-repeat

<div ng-repeat="item in itemList"> 
<form name="item_details" ng-class="validateForm(item_details)"> 
    //few form elements 
</form> 
</div> 

Chcę wymienić każdą formę dynamicznie. Na przykład dodaj $ index do nazwy formularza. Jak to osiągnąć? Próbowałem ng-init na ng-repeat, ale nie działał.

+2

głos dlaczego dół ?? –

+3

downvotes nie mają sensu - jest to uzasadnione pytanie – Olivvv

+3

Zgadzam się, że downvotes nie mają sensu. – hendrix

Odpowiedz

17

Można po prostu zrobić:

<form name="item_details{{$index}}" ng-class="validateForm('item_details'+$index)"> 

EDIT:

Można użyć ng-init jak również, tak jak poniżej:

<div ng-repeat="item in itemList" ng-init="formName = 'item_details' + $index"> 
<form name="{{formName}}" ng-class="validateForm(formName)"> 
    //few form elements 
</form> 
</div> 

Jeśli to tylko zastosować klasę w oparciu o Ważność formularza, możesz zastosować stylizację do automatically added classes, na przykład: ng-valid:

.ng-valid { 
    background-color: green; 
} 
+1

To nie działało. '

Metoda validateForm odebrana undefined dla zmiennej wejściowej formularza. –

+0

Tęskniłeś za moim punktem. Nie potrzebujesz 'validateFrom' jeśli wszystko, co musisz zrobić, to styl CSS –

+0

to złożona walidacja, a nie zmiana css. Poprawiono wiele wartości pól formularza, aby włączyć przycisk przesyłania. –

0

Możesz uzyskać dostęp do instancji formularza przez dynamiczną nazwę używając notacji Wspornik:

<div ng-repeat="item in itemList"> 
    <form name="item_details{{$index}}" ng-class="validateForm(this['item_details' + $index])"> 
    //few form elements 
    </form> 
</div> 
Powiązane problemy