2012-11-27 26 views

回答

6

您可以將{wait: true}作爲選項傳遞給destroy(),這會導致它在從集合中刪除模型之前等待來自服務器的響應。

在結合視圖的事件,你應該分開處理removedestroy事件,當服務器成功返回remove事件將被解僱,但從來沒有如果服務器返回一個錯誤項。

或者,您可以將error處理程序傳遞給model.destroy,如果服務器出於任何原因失敗,則可以使用該處理程序將模型返回。無論是簡單地將模型添加回集合(如果有的話),還是導致數據從服務器重新加載(這可能是更安全的選項)。

請注意,使用此方法時,remove事件仍然會觸發,並且在將模型放回時會跟着add事件。

thing.destroy({error: function(model, response) { 
    // put the thing back in the collection, or cause the collection to reload 
}}); 

你提到的模型數據被重置;我相信上述錯誤處理程序中的model參數會接收原始模型,因此您仍然可以訪問其數據。

欲瞭解更多信息,請參閱骨幹文檔 - http://backbonejs.org/#Model-destroy