我正在尝试 Backbone.js,其中一件事是调用远程 API,因此我需要能够覆盖 Backbone.sync,据我了解 the documentation .
在文档本身中没有一个如何做到这一点的例子,而且似乎没有一个用于 Backbone 的谷歌组......有人可以指出一个这样做的例子吗?
最佳答案
看看这个带注释的源示例,他们用本地存储替代方案覆盖 Backbone.sync
基本上 Backbone.sync 应该是一个接受 4 个参数的函数:
Backbone.sync = function(method, model, options) { };
您需要根据 method
是否成功触发 options.success
或 options.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/