wiem pytanie jest stare i wiem, że nie chciałaś dyrektywy, ale możesz rozważyć zastosowanie dyrektywy, jeśli jest to metoda "kątowa" ... Tutaj jest moja Angular-Validation. Zrobiłem projekt na Githubie i myślę, że to po prostu skaluje się w porównaniu do tego, co jest/było dostępne ... Oparłem się na doskonałej strukturze PHP Laravel i udostępniłem ją pod Angular ... To jest tak szalone proste, potrzebujesz 2 linie 1 linia kodu, 1 linia dla wejścia, 1 linia do wyświetlania błędów, to wszystko ... nigdy więcej i nigdy mniej !!! Dość powiedzieć, dajmy kilka przykładów:
<!-- example 1 -->
<label for="input1">Email</label>
<input type="text" validation="email|min_len:3|max_len:25|required" ng-model="form1.input1" name="input1" />
<!-- example 2 -->
<label for="input2">Alphanumeric + Exact(3) + required</label>
<input type="text" validation="alpha|exact_len:3|required" ng-model="form1.input2" name="input2" />
Tak można zdefiniować niezależnie od ilości reguł walidacji (już 25+ typ zatwierdzającym), które chcę w prosty dyrektywy validation="min_len:2|max_len:10|required|integer"
i komunikat błędu będzie zawsze wyświetlenia w następnym <span>
Nie podoba ci się to już? 1 linia kodu dla twojego wejścia, 1 linia kodu dla wyświetlania błędu, nie możesz być prostszy niż ... oh i nawet wspieram twój Regex, jeśli chcesz dodać. Kolejny bonus, obsługuję również dowolne zdarzenie wyzwalające, najczęściej są to: onblur
i onkeyup
. Och i ja również obsługuję wiele języków lokalizacji za pośrednictwem zewnętrznych plików JSON. Naprawdę dodałem wszystkie wyobrażalne funkcje, które chciałem do jednej zwariowanej prostej dyrektywy.
Koniec klastra Formularz z 10 liniami kodu dla 1 wejścia (przykro, ale zawsze okazało się, że trochę ekstremalnie), gdy jedyne czego potrzebujesz to 2 linie, nie więcej, nawet dla wejścia z 5 weryfikatorami na nim. I nie martw się, że forma nie stała się nieważna, ja też się tym zajmuję, wszystko to jest obsługiwane w dobry sposób "Angular".
Spójrz na mojego projektu GitHub Angular-Validation ... Jestem pewien, że pokochasz go =)
UPDATE
Kolejnym bonusem cukierki! Aby jeszcze bardziej ułatwić użytkownikowi pracę, dodałem walidację timera. Koncepcja jest prosta, nie zawracaj sobie głowy użytkownikiem podczas pisania, ale sprawdzaj, czy robi pauzę lub zmienia dane wejściowe (onBlur) ... Uwielbiam to !!!
Można nawet dostosować zegar zgodnie z własnymi upodobaniami, postanowiłem ustawić go na 1 sekundę w ramach dyrektywy, ale jeśli chcesz dostosować, możesz zadzwonić na przykład jako typing-limit="5000"
, aby uzyskać 5 sekund. koniec czasu. Pełny przykład:
<input type="text" ng-model="form1.input1" typing-limit="5000" validation="integer|required" name="input1" />
<span class="validation text-danger"></span>
UPDATE # 2
Dodano także mecz wejście walidacji potwierdzenia (np .: potwierdzenie hasła), oto przykładowy kod
<!-- input match confirmation, as for example: password confirmation -->
<label for="input4">Password</label>
<input type="password" name="input4" ng-model="form1.input4" validation="alpha|min_len:4|required" />
<label for="input4c">Password Confirmation</label>
<input type="password" name="input4c" ng-model="form1.input4c" validation="match:form1.input4,Password|required" />
Aktualizacja # 3
Uregułowano dyrektywę tak, że wymóg posiadania <span>
do wyś wietlania błę du jest zbę dny, dyrektywa obsługuje teraz samodzielnie, zobacz co de zmiana odzwierciedlona na górze.
DEMO
Dodany live demo na Plunker
jeśli chcesz zrobić wszystkie te walidacji w funkcji JavaScript, dlaczego nie pójść kątowego sposób i stworzyć dyrektywę zwyczaj sprawdzania poprawności? –
Dlaczego chcesz używać funkcji JavaScript? Angular może to zrobić podczas oglądania modeli takich jak tutaj: http://jsfiddle.net/DotDotDot/6UJZk/1/, używanie innej funkcji nie byłoby tak wydajne Myślę, że – DotDotDot