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

标签 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);
}
});

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

但我无法更改服务器端实现。那么我如何在将 responseText 设置为“成功”时触发成功回调,并为 model.save() 的任何其他响应触发错误

最佳答案

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

  • 继承主干模型

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

在你自定义的保存方法中,你会调用super的保存方法,检查responseText,如果成功则调用成功回调。 (请阅读 Backbone 文档,了解如何在 Javascript 中调用父模型的方法)

  • 覆盖 Backbone.Sync

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

关于javascript - 覆盖 model.save() 的成功条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14951803/

相关文章:

javascript - 事件的 Bootstrap 选项卡已更改

javascript - 我可以使用 `fetch` 从另一个运行 JS 脚本吗?

javascript - Meteor.settings 对象何时何地初始化?

javascript - 了解 Backbone.sync 方法中的 [options] 参数

javascript - 将标志从 PHP 发送到 JavaScript

java - Jersey 休息和 csv 响应

html - 什么是 HTTP 'method' 大写最佳实践?

rest - 如何在 RESTful ASP.NET Web API 中路由非 CRUD 操作?

javascript - 以编程方式添加属性的 Backbone 模型

javascript - 将多级 mongodb 文档转换为 Backbone.js 模型/集合