Ich habe es geschafft, die Eingabe zu meinem Server gehen, und der Server reagiert, wenn die Eingabe gültig ist, oder ein Fehlerobjekt zurückgegeben, wenn nicht.Emberjs live serverside Validierung
Ich bin nur nicht sicher, wie Sie das zurückgegebene Fehlerobjekt verwenden, um tatsächlich etwas zu tun. Es gibt viele Beispiele im Internet, wie man das Fehlerobjekt durchläuft und die Nachricht anzeigt, aber das ist nicht genau das, wonach ich suche.
Ich habe eine Form Komponente, die eine Reihe von Feldern hat, die wie folgt aussehen:
{{input type="text" value=account.twitterId class="input" focus-out="validateInput"}}
und ValidateInput in der Komponente sieht aus wie
validateInput() {
let account = get(this, 'account');
account.save().then(() => {
console.log('success!'); // add class to the input field
}).catch((adapterError) => {
console.log(account.get('errors')); // add different class to the input field
console.log(adapterError);
});
},
Wie oben erwähnt, löst dies und liefert entweder erfolgreich oder Fehlermeldung
Aber wie nehme ich das Ergebnis und verwende es, um Klassen zum Klassenschlüssel des Eingabefeldes hinzuzufügen?
Ich habe versucht, mit den folgenden
hasError: false,
actions: {
validateInput() {
let account = get(this, 'account');
account.save().then(() => {
set(this, 'hasError', false);
}).catch((adapterError) => {
set(this, 'hasError', true);
});
},
}
Und dann if-Anweisung in der Front, die Art gearbeitet, aber wieder Auslöser nicht, wenn der Benutzer für eine die Eingabe ändert zweites Mal.
Soll ich eine berechnete Eigenschaft dafür verwenden? Wenn ja, wie würde man aussehen?
Vielen Dank für die Bestätigung, dass es funktionieren sollte, und es funktioniert in der Tat wie erwartet. Frage obwohl; Wie würde ich es für mehrere Felder wiederverwendbar machen? Offensichtlich bedeutet eine einzige Variable, dass alle Felder gleich funktionieren, unabhängig davon, welches Feld gerade bearbeitet wird ... –
Aktualisiert Twiddle, war das, wonach du gesucht hast? Im Grunde genommen handelt es sich um eine Komponente, die "speicherbar" ist (alles mit einer Speichermethode, die ein Versprechen zurückgibt, dh: jedes der Glutendatenmodelle). Sie können das gleiche Konto an beide weitergeben, und beide validieren basierend auf ihren unabhängigen Antworten (öffnen Sie die Konsole, um das Ergebnis zu sehen). Beachten Sie jedoch, dass das Senden aller dieser Netzwerkanforderungen zu übermäßigen Netzwerk-Round-Trips führen kann (und wenn diese voneinander abhängig sind, wird es haarig). Das Vermeiden einer Rundreise mit etwas wie "ember-cp-validations" für "In-App" -Validierungen könnte eine Option sein. –