一尘不染

如何覆盖Backbone.sync?

javascript

我正在尝试Backbone.js,而我正在尝试的事情之一就是调用远程API,因此,据我了解的文档资料,我需要能够覆盖Backbone.sync

在文档本身中没有如何执行此操作的示例,并且似乎没有用于Backbone的google组…有人可以指出执行此操作的示例吗?


阅读 257

收藏
2020-05-01

共1个答案

一尘不染

看看这个带注释的源示例,在该示例中,它们被Backbone.sync本地存储替代项覆盖

基本上,Backbone.sync应该是一个带有4个参数的函数:

Backbone.sync = function(method, model, options) { };

您需要解雇,options.success或者options.error取决于是否method成功。这些方法的格式为:

  • "create" :希望您在服务器上创建模型
  • "read" :希望您从服务器读取此模型并返回
  • "update" :期望您使用参数更新服务器上的模型
  • "delete" :希望您从服务器中删除模型。

您需要实现这4种方法并定义所需的内容 "server"

当然,这些只是Backbone.sync 必须
执行的事情。您可以实施更多的东西methods,也可以将更多的参数传递回去,success但最好不要这样做。

最好确保它与Backbone.sync当前功能相同,以便您对接口进行编程,而不是对实现进行编程。如果您想将修改后Backbone.sync的内容说出来,例如localStorage,则无需自己扩展以匹配扩展后的Backbone.sync。

[编辑]

另请注意,您可以使用的多种实现sync。每个引用Backbone.sync都是准确的,(this.sync || Backbone.sync)因此您只需要执行以下操作即可:

var MyModel = Backbone.Model.extend({ 
    ...

    "sync": myOwnSpecificSync,

    ...
});

Backbone.sync只是所有模型都使用的默认全局变量,除非模型有sync专门设置的方法。

2020-05-01