我有一个相当复杂的 Ember.js 对象,我想在页面加载时将其与初始 HTML/javascript 一起发送(以避免单独访问服务器),然后允许用户对其进行修改。
所以我知道如何设置直接存在的 FIXTURE 数据,并且我知道如何设置 RESTAdapter 以便我可以加载/保存到服务器......我可以两者都做吗?
似乎商店设置了一次,对于一个或另一个。对于一个数据源,我可以拥有多个商店吗?
谢谢!
我有一个相当复杂的 Ember.js 对象,我想在页面加载时将其与初始 HTML/javascript 一起发送(以避免单独访问服务器),然后允许用户对其进行修改。
所以我知道如何设置直接存在的 FIXTURE 数据,并且我知道如何设置 RESTAdapter 以便我可以加载/保存到服务器......我可以两者都做吗?
似乎商店设置了一次,对于一个或另一个。对于一个数据源,我可以拥有多个商店吗?
谢谢!
如果你想从你的应用程序代码之外加载数据,你可以这样做:
向您的文档添加预加载功能(在所有 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);
}
});
通过这种方式,您可以减少初始化应用程序时发出的请求量。
无论您使用哪种适配器,您始终可以将数据直接加载到存储中。例如,
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。