使用 LSAdapter 时,有没有办法将数据预加载到本地存储中。如果使用 FixtureAdapter,我只需将模型的 FIXTURES 属性设置为我想要预加载的 JSON。LSAdapter 中是否有类似的功能?
问问题
440 次
2 回答
0
只需在使用 lsadapter 调用 find 之前将数据推送到本地存储。它本质上与在 FIXTURES 属性中设置它的想法相同。
localStorage.setItem('key', 'item');
于 2013-10-25T04:51:31.803 回答
-1
我正在我的应用程序路由 beforeModel 挂钩上执行此操作。诀窍是先调用pushMany
商店,然后再调用save
每个实例。这两个步骤都是需要的,因为 push 会将它们添加到存储中,并且需要保存才能将它们添加到本地存储,因此下次您不必预加载它们。
var ApplicationRoute, refreshData, refreshDataFor;
ApplicationRoute = Ember.Route.extend({
beforeModel: function() {
return refreshData(this.store);
}
});
refreshData = function(store) {
return refreshDataFor(App.YourModel, store);
};
refreshDataFor = function(model, store) {
model.store = store;
return $.getJSON('your/url/here', function(instances) {
return store.pushMany(model, instances).forEach(function(instance) {
return instance.save();
});
});
};
此外,我们通常在模型中有一个 updated_at 属性。我得到最后一个并将其发送到服务器,所以我们只得到增量。如果您的模型更加静态,您可以重用您的 FIXTURES 属性(如在 FixtureAdapter 中使用的那样)并像我在此处提到的那样简单地循环它们。pushmany
如果需要,将更新它们。
于 2013-10-25T20:19:02.320 回答