从本地存储恢复 Backbone.js 个集合
Restore Backbone.js collection from localstorage
在 Backbone.js 中,我将一组集合保存到本地存储,如下所示:
for (var thing of app.things) {
localStorage.setItem('thing-' + thing.cid, JSON.stringify(thing.collection.toJSON()));
}
我可以确认这些存储在 Chrome 本地存储检查器中。
我正在尝试使用此代码恢复它们:
var localStorageRef = localStorage.getItem('thing-' + thing.cid);
if (localStorageRef) {
thing.collection = JSON.parse(localStorageRef);
}
这不会抛出错误,但它确实意味着下一次我尝试触发第一个代码(到setItem
)会出现以下错误:
Uncaught TypeError: stave.collection.toJSON is not a function
我的第二个代码块中的某些东西使第一个代码块不再工作。
您正在用一个简单数组替换 thing.collection
。相反,reset 包含已解析数据的集合内容。
thing.collection.reset(JSON.parse(localStorageRef));
或者如果 thing.collection
还不是一个集合,创建一个新集合:
thing.collection = new Backbone.Collection(JSON.parse(localStorageRef));
在 Backbone.js 中,我将一组集合保存到本地存储,如下所示:
for (var thing of app.things) {
localStorage.setItem('thing-' + thing.cid, JSON.stringify(thing.collection.toJSON()));
}
我可以确认这些存储在 Chrome 本地存储检查器中。
我正在尝试使用此代码恢复它们:
var localStorageRef = localStorage.getItem('thing-' + thing.cid);
if (localStorageRef) {
thing.collection = JSON.parse(localStorageRef);
}
这不会抛出错误,但它确实意味着下一次我尝试触发第一个代码(到setItem
)会出现以下错误:
Uncaught TypeError: stave.collection.toJSON is not a function
我的第二个代码块中的某些东西使第一个代码块不再工作。
您正在用一个简单数组替换 thing.collection
。相反,reset 包含已解析数据的集合内容。
thing.collection.reset(JSON.parse(localStorageRef));
或者如果 thing.collection
还不是一个集合,创建一个新集合:
thing.collection = new Backbone.Collection(JSON.parse(localStorageRef));