入力が有効な場合はサーバが応答し、そうでない場合はエラーオブジェクトが返されます。Emberjs live serverside validation
返されたエラーオブジェクトを使って実際に何かを行う方法がわかりません。エラーオブジェクトをループしてメッセージを表示する方法については、インターネット上に多くの例がありますが、それは私が後にしているものではありません。
私がどのように見えるフィールドの束を持っているフォームのコンポーネントがあります。上記のように構成要素で
{{input type="text" value=account.twitterId class="input" focus-out="validateInput"}}
とvalidateInputが
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);
});
},
のように見え、これが引き金とどちらかの成功を返しますまたはエラーメッセージ
しかし、結果を受け取り、入力フィールドのクラスキーにクラスを追加するにはどうすればよいですか?
私は、ユーザーが入力を変更した場合、トリガを再なかった種類働いたのが、次の
hasError: false,
actions: {
validateInput() {
let account = get(this, 'account');
account.save().then(() => {
set(this, 'hasError', false);
}).catch((adapterError) => {
set(this, 'hasError', true);
});
},
}
そして前にif文との試みを、やりました2回目。
これは計算されたプロパティを使用するはずですか?もしそうなら、どのように見えるでしょうか?
正常に動作することを確認していただきありがとうございます。正常に動作しています。しかし、質問します。私はそれを複数の分野で再利用できるようにするにはどうすればよいですか?明らかに単一の変数を持つことは、どのフィールドが実際に編集されているかにかかわらず、すべてのフィールドが同じように動作することを意味します。 –
twiddleが更新されました。基本的には、「保存可能」(約束を返すsaveメソッドを持つもの、つまりemberデータモデルのいずれか)をとるコンポーネントです。両方に同じアカウントを渡すことができます。両方とも独立した応答に基づいて検証します(コンソールを開いて結果を確認します)。ただし、これらのネットワーク要求をすべて送信するとネットワークのラウンドトリップが過剰になる可能性があります(これらのいずれかが相互に依存している場合は、ヘアリーになります)。 "in-app"バリデーションのために 'ember-cp-validations'のようなものを使ってラウンドトリップを避けることはオプションかもしれません。 –