Backbone.js模型删除失败

时间:2012-11-27 21:36:09

标签: javascript backbone.js

所以现在当我销毁模型并且服务器返回错误时,无论如何都会触发destroy事件并重置模型数据。

有没有阻止这种情况发生?

1 个答案:

答案 0 :(得分: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