2013-09-30 7 views
22
link: function(scope, elm, attrs, ctrl) { 
     ctrl.$parsers.unshift(function(viewValue) { 

      scope.pwdValidLength = (viewValue && viewValue.length >= 8 ? 'valid' : undefined); 
      scope.pwdHasLetter = (viewValue && /[A-z]/.test(viewValue)) ? 'valid' : undefined; 
      scope.pwdHasNumber = (viewValue && /\d/.test(viewValue)) ? 'valid' : undefined; 

      if(scope.pwdValidLength && scope.pwdHasLetter && scope.pwdHasNumber) { 
       ctrl.$setValidity('pwd', true); 
       return viewValue; 
      } else { 
       ctrl.$setValidity('pwd', false);      
       return undefined; 
      } 

     }); 
    } 

http://jsfiddle.net/adamdbradley/Qdk5M/

In der oben erwähnten Geige wie funktioniert die Passwortüberprüfung statt? Was macht der $ parser.unshift? und was ist der Test (viewValue) .....? Ich habe AngularJS Haupt-Website bezeichnen, kann aber nicht, irgend etwas verstehen ... Bitte führe ich Schritt für Schritt von, wie es der Validierung ...

Ich bin neu in AngularJS ..

Antwort

60

Nachfolgend finden Sie eine Schritt-für-Schritt-Erklärung. Beachten Sie die Dokumentation ist wirklich gut: die Seiten auf the forms und auf the $parsers sind diejenigen, die Sie suchen.

+1

Große Antwort. Sollte akzeptiert werden. – hitokiri82

+0

Nur um klar zu sein, $ Parser ist ein Array (dh Standard-Javascript-Typ, nicht spezifisch für Angular). Unshift ist eine Methode, die dem Javascript-Array-Prototyp zugrunde liegt, daher der Kommentar in dieser Antwort von "Array.unshift() am Anfang der Liste ..." Das ist eine wichtige Unterscheidung, denke ich, weil Anfänger verwirrt sein können zwischen was ist eckig, und was ist native JS. – dudewad