AngularJS async validator - UI-Validierungsnachrichten von der Serverantwort

8

Ich habe einen asynchronen Validator, der einen Dienst aufruft, der 200 (OK) oder 400 (BadRequest) mit einer Nachricht zurückgibt.

Ich möchte die Nachricht als Validierungsnachricht zurückgeben, kann aber nicht herausfinden, wie die Nachricht angezeigt werden kann. Ich habe ein paar Dinge ohne Erfolg ausprobiert.

%Vor%     
Blake Niemyjski 31.12.2014, 16:43
quelle

3 Antworten

1

Ich würde vorschlagen, die globale Ausnahmebehandlung auf Serverseite durchzuführen Wenn ein Fehler auftritt, senden Sie den Erfolg mit der Fehlermeldung

als false %Vor%

Andernfalls senden Sie json mit Erfolg als wahr mit Wert

%Vor%

Dann auf UI-Seite Handle-Ausnahme mit

%Vor%     
Mritunjay 23.04.2016 08:00
quelle
0

Hier ist ein Rätsel: Ссылка

Die Idee ist, dass die Direktiven myValidator und myErrorMessage ihre Fehlermeldung über die Direktive myErrorHandler synchronisieren. Ärgerlich finde ich keine Möglichkeit, auf den Grund zuzugreifen, der vom Validator an reject übergeben wurde.

Bearbeiten: Ich habe die Geige aktualisiert. Jetzt verwendet myValidator zwei asynchrone Validatoren. Ich habe auch eine ValidatorPromise erstellt, um den myErrorHandler Controller zu aktualisieren. Dies ist, wie ich in meinem Kommentar unten beschrieben habe.

Das HTML:

%Vor%

Das JavaScript:

%Vor%     
Chris Bouchard 18.01.2015 03:32
quelle
0

Ich habe einen Plocker vorbereitet, von dem ich denke, dass er das macht, was Sie wollen. Es verwendet eine modifizierte Version von ui-validate, aber ich denke, dass Sie die Idee trotzdem verstehen können.

Ich habe den Dienst 'remoteValidator' definiert. Es hat eine Methode 'validate', die die Reise zum Server simuliert, die ein Versprechen zurückgibt, das mit einer Nachricht zurückweist, wenn der Wert 'schlecht' ist.

%Vor%

Dann habe ich im Controller einen Validator definiert, der diesen Service verwendet und die Fehlermeldung erfasst und das Versprechen zurückgibt, damit der Validierer Ihrer Wahl die Arbeit erledigt.

%Vor%

Auf diese Weise erscheint, wenn Sie im asynchronen Eingabefeld "schlecht" schreiben, wenn Versprechen gelöst werden, eine Fehlermeldung im Bereich zusammen mit dem Namen des Validators in form.field. $ error list.

Ein Ausschnitt des HTML:

%Vor%

Ich weiß, dass das Ablegen der Nachricht in 'errorMsg' nicht die beste ist. Es könnte besser gemacht werden, aber ich muss in die de-validate-async-Direktive einsteigen.

Ich hoffe, es hilft.

    
ejmarino 29.04.2015 19:05
quelle

Tags und Links