javascript - 如何覆盖 Backbone.sync?

标签 javascript backbone.js

我正在尝试 Backbone.js,其中一件事是调用远程 API,因此我需要能够覆盖 Backbone.sync,据我了解 the documentation .

在文档本身中没有一个如何做到这一点的例子,而且似乎没有一个用于 Backbone 的谷歌组......有人可以指出一个这样做的例子吗?

最佳答案

看看这个带注释的源示例,他们用本地存储替代方案覆盖 Backbone.sync

backbone-localStorage

基本上 Backbone.sync 应该是一个接受 4 个参数的函数:

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

您需要根据 method 是否成功触发 options.successoptions.error。方法格式为:

  • "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/

相关文章:

javascript - 我可以打开一个未选择默认选项卡的新窗口(网页)吗

javascript - ng-bind 或表达式不打印

javascript - 如何调用 Backbone 集合内部的方法

javascript - 从主干 View 中调用 jquery 插件的方法

backbone.js - 从 Backbone 中的模型获取中检查 404

javascript - Web 组件 : Defining a function in class, 内联访问

javascript - 合并数组,为什么我的输入数组发生了变化?

javascript - 强制 Backbone fetch 总是使用 POST

javascript - .csv 绑定(bind)到 d3.js 麻烦

javascript - backbone collection fetch 不会在成功调用中运行任何东西,但可以正常获取