我遇到了 Backbone.js 的问题。
我正在使用siuying 的 memorySync 插件来利用模型、集合及其相关方法,但实际上并没有将它们同步到服务器。
这段代码:
n0 = karass.nodes.create();
n1 = karass.nodes.create();
Backbone.memorySync('update', karass.nodes, {});
给我以下错误:
Uncaught TypeError: Cannot read property 'wait' of undefined backbone.js:466
_.extend.save.options.success backbone.js:466
Backbone.memorySync backbone.memory.js:78
Backbone.sync backbone.localStorage.js:188
_.extend.sync backbone.js:276
_.extend.save backbone.js:476
_.extend.create backbone.js:847 (anonymous function) test.js:21
哪里
nodes
是 Backbone.Collection 的节点,它们只是 Backbone.Models (有两个函数,但将它们注释掉会给我同样的错误)。所以实际上是一个空模型。这是节点的代码:
nodes = new (Backbone.Collection.extend({
model: Node,
store: new MemoryStore('nodes'),
}))();
正如您从堆栈跟踪中看到的那样,我也在使用我知道 memorySync 已有一年的历史,并且我正在使用 Backbone.js 0.9.10,所以也许你知道我可以做些什么来修复 memorySync 插件。
最让我困惑的是 localStorage 出现在堆栈跟踪中,即使我在节点集合中使用 MemoryStore。
编辑:哦,我还重新定义Backbone.getSyncMethod
为:
Backbone.getSyncMethod = function(model) {
if(model.localStorage || (model.collection && model.collection.localStorage)) {
return Backbone.localSync;
}
if(model.store || (model.collection && model.collection.store)){
return Backbone.memorySync;
}
return Backbone.ajaxSync;
};
在包括 Backbone、localStorage 和 memorySync 之后。