我正在使用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"
}
}
答案 0 :(得分:29)
我遇到了同样的问题。也许你有类似的东西
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
case "read": resp = model.id ? store.find(model) : store.findAll(); break;
所以0
或""
对于ID无法正常工作,它将返回所有模型
答案 1 :(得分:6)
我也是backbone.js的新手,但看起来持久性模型类似于数据库表。也就是说,它旨在从表中创建/删除/读取记录。 localStorage适配器也是这样,所以你在那里做的是创建一个Msg“表” 在localStorage中,每次都创建一个新的Msg“记录”,并且适配器为每个新的Msg提供一个唯一的id。
如果你只有一个对象,那么直接使用localStorage可能更容易。 API非常简单:
localStorage.setItem("key","value");
请记住,localStorage仅将键/值对作为字符串处理,因此您需要转换为字符串格式。
看看这个问题,了解更多信息: