2

私のモデルはサーバー上で正しく永続化され、次のスニペットを含む応答テキスト「成功」もクライアントで受信されます。ただし、errorの代わりにコールバックが実行されるたびにsuccess

myModel.save({}, 
{  
success: function(model, response) {
    console.log('SUCCESS:');
    console.log(response);
},
error: function(model, response) {
    console.log('FAIL:');
    console.log(response);
}
});

バックボーンのドキュメントでは、サーバーに永続化されたオブジェクトの json 表現がクライアントに返された場合にのみ、成功がトリガーされると指定されています。

しかし、サーバー側の実装を変更することはできません。では、responseText を「成功」として取得したときに成功コールバックをトリガーし、model.save() の他の応答に対してエラーをトリガーするにはどうすればよいですか?

4

1 に答える 1

1

これを解決するには、次の 2 つの方法があります。

  • バックボーン モデルの継承

Backbone Model から継承する独自のカスタム モデルを作成できます。その中で、save メソッドをオーバーライドできます。モデルを拡張する方法についてバックボーンのドキュメントを読む

カスタムの save メソッドでは、super の save メソッドを呼び出し、responseText をチェックします。成功した場合は、success コールバックを呼び出します。(Javascript で親モデルのメソッドを呼び出す方法については、バックボーン ドキュメントをお読みください)

  • Backbone.Sync をオーバーライドする

バックボーンには、基本的にデフォルトですべての ajax リクエストを作成し、応答を解析してから、モデルで保存を呼び出すときに指定した成功/エラー コールバックを呼び出す Sync モジュールがあります。とてもシンプルです。このドキュメントを見てください。繰り返しますが、これをオーバーライドして、Backbone がデフォルトで行っていることを正確に行いますが、受け取った responseText に基づいて成功/エラー コールバックのみを呼び出します。

于 2013-02-19T08:07:22.923 に答える