我遇到了Backbone.js的问题。
我正在使用siuying's memorySync plugin来利用模型,集合及其相关方法,但实际上并没有将它们同步到服务器。
此代码:
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.Nollection节点,它只是Backbone.Models(有两个函数,但注释掉它们会给我带来同样的错误)。如此有效的空模型。这是节点的代码:
nodes = new (Backbone.Collection.extend({
model: Node,
store: new MemoryStore('nodes'),
}))();
从堆栈跟踪中可以看出,我也在使用 我知道memorySync已经有一年了,我正在使用Backbone.js 0.9.10,所以也许你知道我可以做些什么来修复memorySync插件。
最令我困惑的是localStorage出现在堆栈跟踪中,即使我在nodes集合中使用了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。
答案 0 :(得分:2)
查看memorySync的来源(第78行):
https://github.com/siuying/Backbone.memorySync/blob/master/backbone.memory.js#L78
似乎它正在尝试调用成功函数,即使未定义函数也是如此。
作为一种解决方法,您可以尝试传递一个空的成功函数:
Backbone.memorySync('update', karass.nodes, { success: function () {} });
对于长期使用,您可能希望向memorySync项目提交错误报告或补丁。