2

我的模型正确地保存在服务器上,并且客户端也收到了响应文本“成功”,其中包含以下代码段。但是,每次error执行我的回调而不是success.

myModel.save({}, 
{  
success: function(model, response) {
    console.log('SUCCESS:');
    console.log(response);
},
error: function(model, response) {
    console.log('FAIL:');
    console.log(response);
}
});

主干文档指定只有当持久在服务器上的对象的 json 表示返回给客户端时才会触发成功。

但我不能改变服务器端的实现。那么我如何才能在将 responseText 获取为“成功”时触发成功回调,而对于 model.save() 的任何其他响应则为错误

4

1 回答 1

1

有两种方法可以解决这个问题:

  • 继承骨干模型

您可以创建自己的自定义模型,该模型继承自 Backbone 模型。在其中您可以覆盖保存方法。阅读 Backbone 文档,了解如何扩展他们的模型

在您自定义的保存方法中,您将调用 super 的保存方法,检查 responseText,如果成功则调用成功回调。(请阅读关于如何在 Javascript 中调用父模型的方法的主干文档)

  • 覆盖 Backbone.Sync

Backbone 有一个 Sync 模块,基本上默认情况下会发出所有 ajax 请求,解析响应,然后调用您在模型上调用 save 时指定的成功/错误回调。这很简单。看看这个文档。您可以再次覆盖它,完全按照 Backbone 默认执行的操作,但仅根据您收到的 responseText 调用成功/错误回调。

于 2013-02-19T08:07:22.923 回答