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 语句失败,那么它应该触发保存函数的错误回调。可能吗?谢谢

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对象,错误回调应将其作为第二个参数。

如果您想提供与 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 参数。xhr的status将是 0 并且statusText“中止”。

于 2013-01-16T10:23:39.667 回答