在本地存储中保存模型

Posted

技术标签:

【中文标题】在本地存储中保存模型【英文标题】: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"
    
  

【问题讨论】:

【参考方案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 不起作用,它将返回所有模型

【讨论】:

正确!谢谢@lublushokolad ;) 链接到github中的问题/问题github.com/jeromegn/Backbone.localStorage/issues/56【参考方案2】:

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

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

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

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

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

Storing Objects in html5 localStorage

【讨论】:

以上是关于在本地存储中保存模型的主要内容,如果未能解决你的问题,请参考以下文章

将日期保存到本地存储

Tensorflow v2 创建网络模型且保存参数至本地(非keras)

如何在本地存储中保存图像位置

将数据保存到本地存储

如何在本地存储中保存对象数组

从本地存储中保存和检索日期