在本地存储中保存模型
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
【讨论】:
以上是关于在本地存储中保存模型的主要内容,如果未能解决你的问题,请参考以下文章