【问题标题】:Backbone.js: Cannot read property 'wait' of undefiendBackbone.js:无法读取未定义的属性“等待”
【发布时间】:2013-02-21 22:27:39
【问题描述】:

我遇到了 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.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 之后。

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    查看 memorySync 的源代码(第 78 行):

    https://github.com/siuying/Backbone.memorySync/blob/master/backbone.memory.js#L78

    它似乎正在尝试调用成功函数,即使没有定义。

    作为一种解决方法,您可以尝试传递一个空的成功函数:

    Backbone.memorySync('update', karass.nodes, { success: function () {} });
    

    为了长期使用,您可能需要向 memorySync 项目提交错误报告或补丁。

    【讨论】:

    猜你喜欢
    • 2020-02-15
    • 2021-09-10
    • 2015-07-05
    • 2019-08-28
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 2020-04-06
    • 2020-10-30
    相关资源
    最近更新 更多