2015-05-23 13 views
6

Mein Problem - es gibt eine Webseite, die für alle zugänglich ist. Wenn ein nicht registrierter Benutzer hereinkommt und das Formular beim Senden speichert, gibt es ein Login-Modal, das nach einem Login fragt.zwingen asyncvalidators in angularjs

Wenn der Benutzer neu ist, wird er sich erneut registrieren und erneut absenden. Wenn der Benutzer nicht neu ist, wird er sich anmelden und erneut auf "Senden" klicken.

Wenn registrierte Benutzer besucht die Seite Formularname mit Asynchron-Validator überprüft wird:

app.compileProvider.directive('nameAvailable', ['$q', '$http', 'service', function ($q, $http, service) { 
     return { 
      restrict: 'AE', 
      require: 'ngModel', 
      link: function ($scope, elem, attrs, ngModel) { 
       ngModel.$asyncValidators.queryName = function (queryName) { 
        --logic 
       } 
      } 
     } 
    }]); 

Und wenn registrierte Benutzer dieses Formular mit dem gleichen Namen gespeichert hat, dann wird es fehlschlagen, wenn er es füllt und dann melden Sie sich an .

Frage ist - wie kann ich Validierung auf diesem Feld erzwingen, nachdem Benutzer sich anmeldet?

Eine Sache, die ich gefunden habe, ist mit ngModelController und Aufruf validate(), aber wo auf es in meinem Controller zugreifen?

Vielen Dank!

+0

Haben Sie versucht, 'form. $ Submitted' zu verwenden, um zu überprüfen, ob das Formular gesendet wurde und die Logik, die Sie danach brauchen? – Cyberdelphos

Antwort

4

Ich habe die plunker mit Beispiel erstellt, wie asynchrone Daten in eckiger Weise zu validieren.

Hier aktualisiert plunker mit Validierungstaste.

+0

Das ist das gleiche, was ich habe - ich brauche das in der Nähe des Eingabefeldes, welches Knopf hat, der die Async-Validierung noch einmal ausführt. – sandris

+0

Bitte überprüfen Sie die aktualisierte Antwort. – Mikalai