重写model.save()的成功条件



My Model在服务器上被正确地持久化,并且在客户端上也接收到带有以下代码段的响应文本"success"。但是,每次执行我的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获取为"success"时触发success回调,并为模型的任何其他响应触发error。save()

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

  • 继承主干模型

您可以创建自己的自定义模型,该模型继承自主干模型。在其中,您可以覆盖保存方法。阅读有关如何扩展模型的主干文档

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

  • 覆盖主干。同步

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

最新更新