【问题标题】:Saving a model in local storage在本地存储中保存模型
【发布时间】:2011-11-24 13:29:33
【问题描述】:

我正在使用带有 Backbone 的 Jerome's localStorage 适配器,它非常适合收藏。

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

localStorage: new Store("msg")

然后我进行保存并获取。我的问题是,每次我刷新并初始化我的应用程序时,都会将我的模型的新表示添加到 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"
    }
  }

【问题讨论】:

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


    【解决方案1】:

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

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

    我改成

    var s = new Settings({ id: 1 });
    

    localStorage 适配器检查 id like

     case "read":    resp = model.id ? store.find(model) : store.findAll(); break;
    

    所以0 或"" for id 不起作用,它将返回所有模型

    【讨论】:

    【解决方案2】:

    我也是backbone.js 的新手,但看起来持久性模型类似于数据库表。也就是说,它旨在从表中创建/删除/读取记录。 localStorage 适配器做同样的事情,所以你在那里做的是创建一个 Msg“表” 在localStorage中,每次都创建一个新的Msg“记录”,适配器给每个新的Msg一个唯一的ID。

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

    localStorage.setItem("key","value");
    

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

    看看这个问题,了解更多关于这样做的信息:

    Storing Objects in HTML5 localStorage

    【讨论】:

      猜你喜欢
      • 2013-04-30
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 2012-02-10
      • 2021-12-06
      • 2015-05-23
      • 2013-11-05
      相关资源
      最近更新 更多