将模型保存在本地存储中

Seb*_*ian 17 javascript local-storage backbone.js backbone-local-storage

我正在使用Jerome的localStorage适配器和Backbone,它非常适合收藏.

但是,现在我有一个我需要保存的模型.所以在我的模型中我设置:

localStorage: new Store("msg")
Run Code Online (Sandbox Code Playgroud)

然后我做我的保存并获取.我的问题是,每当我刷新并初始化我的应用程序时,我的模型的新表示将添加到localStorage,请参阅下文.

我究竟做错了什么?

window.localStorage.msg = {
  // Created after first run
  "1de5770c-1431-3b15-539b-695cedf3a415":{
    "title":"First run",
    "id":"1de5770c-1431-3b15-539b-695cedf3a415"
  },
  // Created after second run
  "26c1fdb7-5803-a61f-ca12-2701dba9a09e":{
    "0":{
      "title":"First run",
      "id":"1de5770c-1431-3b15-539b-695cedf3a415"
    },
      "title":"Second run",
      "id":"26c1fdb7-5803-a61f-ca12-2701dba9a09e"
    }
  }
Run Code Online (Sandbox Code Playgroud)

Igo*_*eev 29

我遇到了同样的问题.也许你有类似的东西

var Settings = Backbone.Model.extend({
  localStorage: new Store("Settings"),
  defaults: { a: 1 }
});

var s = new Settings;
s.fetch();
Run Code Online (Sandbox Code Playgroud)

我换了

var s = new Settings({ id: 1 });
Run Code Online (Sandbox Code Playgroud)

localStorage适配器检查id如何

 case "read":    resp = model.id ? store.find(model) : store.findAll(); break;
Run Code Online (Sandbox Code Playgroud)

所以0""对于id不会工作,它将返回所有模型中的一个

  • 链接到github中的问题/问题https://github.com/jeromegn/Backbone.localStorage/issues/56 (3认同)

小智 6

我也是backbone.js的新手,但看起来持久性模型类似于数据库表.也就是说,它旨在从表中创建/删除/读取记录.localStorage适配器也是如此,所以你在那里做的是在localStorage中创建一个Msg"表",并且每次都创建一个新的Msg"记录",并且适配器为每个新的Msg提供一个唯一的id.

如果你只有一个对象,那么直接使用localStorage可能更容易.API非常简单:

localStorage.setItem("key","value");
Run Code Online (Sandbox Code Playgroud)

请记住,localStorage仅将键/值对作为字符串处理,因此您需要转换为字符串格式.

看看这个问题,了解更多相关信息:

在HTML5 localStorage中存储对象