4

我有一个相当复杂的 Ember.js 对象,我想在页面加载时将其与初始 HTML/javascript 一起发送(以避免单独访问服务器),然后允许用户对其进行修改。

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

似乎商店设置了一次,对于一个或另一个。对于一个数据源,我可以拥有多个商店吗?

谢谢!

4

2 回答 2

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中,您使用 store 作为参数调用 preload 函数。

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

通过这种方式,您可以减少初始化应用程序时发出的请求量。

于 2013-04-04T12:22:54.667 回答
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')
});

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

于 2013-03-09T22:51:22.227 回答