変更されていないデータを設定すると、変更イベントが発生せず、検証も行われないことは、backbone.jsの既知の機能です。しかし、バックエンド検証の結果を格納するAJAX呼び出しからのJSON応答を保存しているので、変更イベントが必要です。ユーザーが同じフィールドを空のままフォームを送信し続けると、バックエンドの検証によって同じJSON結果が返されます。モデルに保存すると、変更イベントがトリガーされません。値が変更されない場合のbackbone.jsの変更
私はモデルにデータを設定するAJAXの成功コールバックの中に試したいくつかのこと:
しようとしました溶液#1
t.model.unset('fieldErrors',{silent: true});
t.model.set({fieldErrors: JSONResponse});
しようとしました溶液#2
t.model.set({fieldErrors: null},{silent: true});
t.model.set({fieldErrors: JSONResponse});
これらのどちらも、変更イベントが発生し、呼び出しが行われたときにユーザーが同じJSONResponseを持っていると2度目に発生しません。
を使用すると、定型のを恐れていない場合は、ScottPuleoの回答を参照してください。それ以外の場合は、 'Model#set'メソッドをオーバーライドして常にカスタムイベントを発生させることができます(興味がある場合、私はどのように答えを投稿します)。 – Loamhoof