2013-01-16 57 views
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函數的錯誤回調。可能嗎?由於

回答

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「中止」。

+0

我做了你的建議,但如果我成功中止請求,我似乎無法做出任何請求後。 – jongbanaag