骨干本地存储“未定义不是函数”

时间:2012-06-03 02:33:00

标签: backbone.js local-storage backbone-local-storage

我正在使用Backbone.LocalStorage http://jsfiddle.net/jiewmeng/grhz9/3/

$(function() {
    console.log(Backbone.LocalStorage); // undefined!!
    var Todo = Backbone.Model.extend({});
    var Todos = Backbone.Collection.extend({
        model: Todo,
        localStorage: new Backbone.LocalStorage("todos")
    });
});​

第一个console.log()给出undefined。然后在localStorage: ...

出现错误
  

未捕获的TypeError:undefined不是函数

预计Backbone.LocalStorageundefined,但为什么?

2 个答案:

答案 0 :(得分:10)

您要加载的backbone.localStorage-min.js

  

http://cdnjs.cloudflare.com/ajax/libs/backbone-localstorage.js/1.0/backbone.localStorage-min.js

看起来已经过时了,根本没有定义Backbone.LocalStorage。您使用的backbone.localStorage-min.js版本定义window.Store而不是Backbone.LocalStorage。如果切换到(http://jsfiddle.net/ambiguous/grhz9/5/):

var Todos = Backbone.Collection.extend({
    model: Todo,
    localStorage: new Store("todos")
});

然后您可以构建Todos集合。我不知道当你真正尝试使用它时,事情会有多好。 “Sun Aug 14 2011 09:53:55 -0400”在互联网时代已经很久以前了,所以版本很古老。

如果您从Github切换到最新版本:

  

https://raw.github.com/jeromegn/Backbone.localStorage/master/backbone.localStorage-min.js

你会发现JavaScript中存在一些差异,当你使用new Backbone.LocalStorage('todos')时,一切都将开始工作:

  

http://jsfiddle.net/ambiguous/grhz9/4/

答案 1 :(得分:2)

另一个答案是正确的 - 1.0已经过时了。

我已将backbone.localstorage更新为最新版本:

http://cdnjs.cloudflare.com/ajax/libs/backbone-localstorage.js/1.1.0/backbone.localStorage-min.js(制作)

http://cdnjs.cloudflare.com/ajax/libs/backbone-localstorage.js/1.1.0/backbone.localStorage.js(dev)

希望有所帮助!