覆盖model.save()的成功条件

时间:2013-02-19 07:14:12

标签: javascript rest backbone.js

我的模型已正确保留在服务器上,并且客户端上还收到了响应文本“成功”,其中包含以下代码段。但是,每次执行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()的任何其他响应发出错误

1 个答案:

答案 0 :(得分:1)

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

  • 继承Backbone模型

您可以创建自己的自定义模型,该模型继承自Backbone Model。在其中,您可以覆盖save方法。 Read Backbone docs on how to extend their model

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

  • 覆盖Backbone.Sync

Backbone有一个Sync模块,它基本上默认生成所有ajax请求,解析响应,然后调用在模型上调用save时指定的成功/错误回调。这很简单。 Take a look at this doc。您可以再次覆盖它,完全按照Backbone默认执行的操作,但只根据您收到的responseText调用成功/错误回调。