使用LSAdapter时,有没有办法将数据预加载到本地存储中。如果使用FixtureAdapter,我只需将model的FIXTURES属性设置为我想要预加载的JSON。 LSAdapter中是否有类似的功能?
答案 0 :(得分:0)
在使用lsadapter调用find之前,只需将数据推送到本地存储。它与在FIXTURES属性中设置它的想法基本相同。
localStorage.setItem('key','item');
答案 1 :(得分:-1)
我在应用程序路由beforeModel hook上执行此操作。诀窍是在商店上调用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
会更新它们。