在Ember:Fixture与REST适配器中预加载数据

时间:2013-03-09 15:08:36

标签: ember.js ember-data preload

我有一个相当复杂的Ember.js对象,我希望在页面加载时使用初始HTML / javascript发送(以避免单独访问服务器),但允许用户修改它。 / p>

所以我知道如何设置直接存在的FIXTURE数据,我知道如何设置RESTAdapter以便我可以加载/保存到服务器......我能同时做到吗?

似乎就像商店为其中一个设置了一次。对于一个数据源,我可以拥有多个商店吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

如果要从应用程序代码外部加载数据,可以执行以下操作:

在文档中添加预加载功能(在所有app.js和store.js下面):

<script>
    window.preload = function(store) {
        store.loadMany(App.Post,[10,11],[{ id: 10, content: "testcontent", author_id: 1 },{ id: 11, content: "testcontent2", author_id: 1 }]);
        store.load(App.User,{ id: 1, username: "supervisor"});
    }
</script>

ApplicationRoute 中,您可以将商店作为参数调用预加载功能。

App.ApplicationRoute = Ember.Route.extend({
    setupController: function(controller, model) {
        window.preload(this.store);
    }
});

这样可以减少初始化应用程序时的请求量。

答案 1 :(得分:3)

无论您使用哪种适配器,都可以始终将数据直接加载到商店中。例如,

App.Store = DS.Store.extend({
    init: function() {
        this._super();
        this.load(App.Post, {
            id: 1,
            text: 'Initial post.'
        });
    }
});

App.Post = DS.Model.extend({
  text: DS.attr('string')
});

有关完整示例,请参阅this jsfiddle