1

バックボーンに保存のエラーコールバックを単にトリガーまたは呼び出すことは可能ですか?

これでバックボーンの保存機能を上書きしています

save: function(attributes, options) {
            options || (options = {});
            options.timeout    = 10000;    
            options.beforeSend = sendAuthorization;
            console.log( options.connection.ConnectionType );
            if( options.connection.ConnectionType != 'No network connection' ){
                Backbone.Model.prototype.save.call(this, attributes, options);
            }else{
                console.log("ERROR! network related!");
            }
    }

options.connection.ConnectionTypeは、デバイス(iPad)の現在のインターネット接続を示す単純な文字列です。

this.model.save( this.model, 
  connection : { ConnectionType : "No network connection" },
  success    : {...},
  error      : {...}
}

私が欲しいのは、ifステートメントが失敗した場合、save関数のエラーコールバックをトリガーする必要があるということです。出来ますか?ありがとう

4

1 に答える 1

2

error最も単純な方法では、コールバック関数を実行するだけです。

if( options.connection.ConnectionType != 'No network connection' ){
    Backbone.Model.prototype.save.call(this, attributes, options);    
} else {
    if(options.error) {
        options.error(this, null, options);
    }
}

saveこのメソッドには、メソッドとerrorコールバックAPIに準拠していないという問題があります。メソッドはオブジェクトsaveを返すことが期待されjqXHRており、エラーコールバックはそれを2番目の引数として持つことが期待されています。

API互換のメソッド/コールバックシグネチャを提供する場合、最も簡単な方法はリクエストを中止することです。何かのようなもの:

var xhr = Backbone.Model.prototype.save.call(this, attributes, options);
if( options.connection.ConnectionType == 'No network connection' ){
    xhr.abort();
}
return xhr;

これにより、リクエストが開始されるとすぐにキャンセルされます。xhr/promiseリターンオブジェクトと正しいxhrパラメーターをコールバックに取得します。statusxhrのは0で「statusTextabort」になります。

于 2013-01-16T10:23:39.667 に答える