モデルをコレクションに追加すると、モデルの Validate メソッドが複数回実行されるのはなぜでしょうか。
モデルの検証をこれまで取り除いても...
Client.Model = Backbone.Model.extend ({
validate : function(attrs) {
if ( !attrs.first_name ){
return 'Required';
}
}
});
validate メソッド内から console.log() を実行すると、5 回呼び出されていることがわかります。最初の 2 つは正常に検証され、3 番目は失敗し、4 番目と 5 番目もパスします (その後、サーバー上で正しく同期されます)。
カスタム メッセージ プラグインを構築していて、検証が発生する 5 回すべてが呼び出されているため、これが問題を引き起こしています。
新しいモデルを作成してサーバーからモデルを取得すると、正しく呼び出されることがわかっています。しかし、私が理解できないのは、検証するためのこの「3番目の」呼び出しが常に失敗することです。(ところで、サーバーの問題ではないことがわかりました)
私はここで何が欠けているのだろうか..
前もって感謝します。
:)
JSBIN - http://jsbin.com/ucowoq/2/edit
コンソールを確認してください。明らかに POST にエラーがありますが、validate メソッドが 5 回実行されていることが示されています。私のアプリでは、毎回 3 回目の検証に失敗しています。サーバーは、500 エラーまたは作成されたモデルの JSON のみを返します。
これがこれを見ている人に役立つことを願っています。
編集:すべてが正しく機能するように、このハックを思い付きました。検証メソッドが5回呼び出されることにまだ満足していませんが、検証が失敗する原因となった1回の発生には、キーと「未定義」の値を持つオブジェクトが含まれていたため、何かを返す前にそれを確認しています. これにより、正しいタイミングでエラーを取得できるようになったため、「メッセージ」プラグインを実装できます。
validate: function( attrs ){
if (attrs.first_name !== undefined){
if (!attrs.first_name)
return 'first name required';
}
}