如何预加载数据?

时间:2013-12-30 16:07:59

标签: ember.js ember-data

我正试图想出一个理智的方法来预加载一些动态数据,以便在页面加载后摆脱我的rails应用程序的初始XHR。

我一直在尝试生成类似的东西:

App.Store.pushMany('category', [{"id":1,"name" ... ]);

在我的application.html.erb布局中,因为我可以访问服务器端的数据。

但是,“App.Store”似乎在全局范围内没有正确解析,我得到了“没有方法'pushMany'”错误。

有没有人想出一个好办法呢?我正在尝试的方式看起来有点hacky,但我能忍受它,如果我能让它工作......我如何处理正确的DS.Store实例?

这是我在application.html.erb(Rails app)中得到的:

<script type='text/javascript'>
    App.Store.pushMany('category', <%= ActiveModel::ArraySerializer.new(@categories, each_serializer: Api::V1::CategorySerializer).to_json.html_safe %>);
</script>

1 个答案:

答案 0 :(得分:2)

你可能最好将它作为json注入,然后在应用程序路径中加载它。

<script type='text/javascript'>
    window.preloadCategory = <%= ActiveModel::ArraySerializer.new(@categories, each_serializer: Api::V1::CategorySerializer).to_json.html_safe %>;
</script>


App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    this.store.pushPayload('category', window.preloadCategory);
  }
});