我正在尝试Backbone.js,而我正在尝试的事情之一就是调用远程API,因此,据我所知the documentation,我需要能够覆盖Backbone.sync。

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

最佳答案

看一下这个带注释的源代码示例,在该示例中,他们使用本地存储替代项覆盖Backbone.sync
backbone-localStorage

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

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

您需要根据options.success是否成功触发options.errormethod。这些方法的格式为:
  • "create":期望您在服务器上创建模型
  • "read":希望您从服务器读取此模型并将其返回
  • "update":期望您使用参数
  • 更新服务器上的模型
  • "delete":期望您从服务器删除模型。

  • 您需要实现这4种方法并为"server"定义任何内容

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

    最好确保它与Backbone.sync当前所做的相同,以便您对接口(interface)进行编程,而不是对实现进行编程。如果您要退出修改后的Backbone.sync以说localStorage,则无需自己扩展它即可与扩展Backbone.sync相匹配”

    [编辑]

    还要注意,您可以使用sync的多种实现。每个对Backbone.sync的引用实际上都是(this.sync || Backbone.sync),因此您只需要执行以下操作即可:
    var MyModel = Backbone.Model.extend({
        ...
    
        "sync": myOwnSpecificSync,
    
        ...
    });
    
    Backbone.sync只是所有模型都使用的默认全局变量,除非模型具有专门设置的sync方法。

    关于javascript - 如何覆盖Backbone.sync?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5096549/

    10-12 00:21
    查看更多