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

Posted

技术标签:

【中文标题】骨干本地存储“未定义不是函数”【英文标题】:Backbone Local Storage "undefined is not a function" 【发布时间】:2012-06-07 17:01:30 【问题描述】:

我正在使用Backbone.LocalStoragehttp://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: ...行出现错误

Uncaught TypeError: undefined is not a function

预计 Backbone.LocalStorageundefined 但为什么呢?

【问题讨论】:

加载backbone.js后是否添加了 @josnidhin,是的,我在 jsFiddle 中做了 【参考方案1】:

您正在加载的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/

【讨论】:

截至 2013 年 2 月 1 日,CloudFlare 的 cdnjs 仍在提供非常过时的 2011 年 8 月 14 日副本。我也遇到了同样的问题,没想到检查cdnjs版本是不是最新的。 @joemaller:我想知道这是否是版本号问题。 github 页面说的是 v1.0,说的是 Backbone.LocalStorage,也许旧的window.Store 版本也被标记为 v1.0。 我想是的,CDN's github page 上有几个未解决的问题,希望他们能解决所有问题。 全部修复:cdnjs.cloudflare.com/ajax/libs/backbone-localstorage.js/1.1.0/… 截至 2 月 2 日,CDN 是最新的 :) 请参阅 @RyanKirkman 的回答。【参考方案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(开发)

希望有帮助!

【讨论】:

以上是关于骨干本地存储“未定义不是函数”的主要内容,如果未能解决你的问题,请参考以下文章

本地存储将数据存储到本地

本地存储 localStorage

离子本地存储不会持续存在

cookie本地存储

LocalStorage本地存储

vue3.0 监听本地存储