2014-12-16 10 views
22

Come posso denominare un modulo all'interno di ng-repeat con un nome dinamico?Nome dinamico di AngularJs per un modulo all'interno di ng-repeat

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

voglio nominare ogni modulo in modo dinamico. Ad esempio, aggiungi l'indice $ al nome del modulo. Come lo realizzo? Ho provato ng-init su ng-repeat ma non ha funzionato.

+2

voto perché giù ?? –

+3

downvotes non hanno senso - è una domanda legittima – Olivvv

+3

concordo sul fatto che i downvotes non hanno senso. – hendrix

risposta

17

Si può semplicemente fare:

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

EDIT:

È possibile utilizzare ng-init così, in questo modo:

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

Se è solo di applicare una classe basata su validità del modulo, quindi è possibile applicare lo styling a automatically added classes, ad esempio: ng-valid:

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

Questo non ha funzionato. '

' metodo validateForm ricevuto indefinito per l'input della variabile di forma. –

+0

Hai perso il mio punto. Non hai bisogno di 'validateFrom' se tutto quello che devi fare è dare uno stile al CSS –

+0

, una convalida complessa e non una modifica di CSS. Più valori dei campi modulo vengono convalidati per abilitare il pulsante di invio. –

0

Si può accedere all'istanza del modulo con il nome dinamico usando la notazione staffa:

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