从localstorage恢复Backbone.js集合

时间:2017-05-10 16:24:48

标签: javascript backbone.js local-storage

在Backbone.js中,我将一系列集合保存到localstorage,如下所示:

for (var thing of app.things) {
    localStorage.setItem('thing-' + thing.cid, JSON.stringify(thing.collection.toJSON()));
}

我可以确认这些内容存储在Chrome localstorage检查器中。

我正在尝试使用此代码恢复它们:

var localStorageRef = localStorage.getItem('thing-' + thing.cid);
if (localStorageRef) {
    thing.collection = JSON.parse(localStorageRef);
}

这不会引发错误,但它确实意味着下次我尝试触发第一个代码(到setItem)时会发生以下错误:

Uncaught TypeError: stave.collection.toJSON is not a function

我的第二块代码中的某些东西使得第一个块不再起作用。

1 个答案:

答案 0 :(得分:0)

您正在使用简单数组替换thing.collection。相反,reset使用已解析数据的集合内容。

thing.collection.reset(JSON.parse(localStorageRef));

或者如果thing.collection不是集合,请创建一个新集合:

thing.collection = new Backbone.Collection(JSON.parse(localStorageRef));