我有一個相當複雜的Ember.js對象,我想用頁面加載時的初始HTML/javascript發送(避免單獨到服務器),但然後允許用戶修改它。在Ember中預加載數據:Fixture vs REST適配器
所以我知道如何設置直接存在的FIXTURE數據,並且我知道如何設置RESTAdapter以便我可以加載/保存到服務器......我可以同時做這兩件事嗎?
它似乎就像商店設置一次,一個或另一個。對於一個數據源,我可以擁有多個商店嗎?
謝謝!
我有一個相當複雜的Ember.js對象,我想用頁面加載時的初始HTML/javascript發送(避免單獨到服務器),但然後允許用戶修改它。在Ember中預加載數據:Fixture vs REST適配器
所以我知道如何設置直接存在的FIXTURE數據,並且我知道如何設置RESTAdapter以便我可以加載/保存到服務器......我可以同時做這兩件事嗎?
它似乎就像商店設置一次,一個或另一個。對於一個數據源,我可以擁有多個商店嗎?
謝謝!
無論您使用哪種適配器,您都可以直接將數據直接加載到商店中。例如,
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。
非常好,謝謝! – 2013-03-10 22:23:50
如果你想從你的應用程序代碼之外加載數據,你可以做如下所示:
添加預載功能,以您的文檔(以下所有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);
}
});
這樣可以減少應用程序初始化時發出的請求數量。
謝謝!這看起來非常有用。 – 2013-04-04 18:20:17
定義的商店變量在哪裏? – 2015-09-24 11:07:22
@suraj它在這個範圍內可用,我在示例中對其進行了修正。 – 2015-09-24 11:50:24
Ember數據支持側載數據:http://emberjs.com/guides/models/the-rest-adapter/#toc_sideloaded-relationships,但我不確定您是否可以預先加載使用初始化加載的JSON模型頁... – CraigTeegarden 2013-03-09 20:19:45