2013-03-25 12 views
29

Ich versuche $setValidity für ein Element in einer Direktive zu verwenden. Alle Beispiele, die ich gefunden habe, scheinen es auf dem Controller zu setzen ...

Ich verzweigte eine JS Geige auf Form Validierung und habe eine Menge Dinge ausprobiert. Keine Erkenntnisse würden die meisten geschätzt werden: http://jsfiddle.net/thomporter/pmKpG/2/

In der Geige wird die $setValidity auf dem Controller genannt:

ctrl.$setValidity('pwd', true); 

Ich möchte so etwas wie zu tun:

elm.$setValidity('pwd', true); 

so dass in der Form kann ich etwas tun wie:

ng-class="{error:form.password.$error.pwd}" 

Antwort

60

Ich habe es herausgefunden ... Sie müssen einen Namen auf den Eingabeelementen haben. Sobald ich den Namen hinzugefügt habe, wurden die Fehler automatisch an die Elemente gebunden, keine zusätzlichen Änderungen nötig!

<input ng-model="password" 
     name="inputPassword" 
     class="immediate-help" 
     password-validate 
     required 
     type="password" 
     id="inputPassword" 
     placeholder="Password"> 

http://jsfiddle.net/thomporter/pmKpG/4/

+27

vermeiden Kommentare wie +1 oder dank? auf keinen Fall. Vielen Dank! –

+2

@Thom Porter, Warum geben Sie undefined statt falscher Zeile 22 zurück (http://jsfiddle.net/thomporter/pmKpG/4/)? – MaximeBernard

+3

Plus eine für die Beantwortung Ihrer eigenen Frage - und mit anderen teilen – Mawg