0

使用 LSAdapter 时,有没有办法将数据预加载到本地存储中。如果使用 FixtureAdapter,我只需将模型的 FIXTURES 属性设置为我想要预加载的 JSON。LSAdapter 中是否有类似的功能?

4

2 回答 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 回答