我正在从ember-data 0.0.14迁移到ember-data 1.0.0-beta.6。我一直关注the guide
我正在预加载应用程序所需的一些数据,在应用程序准备就绪时触发此预加载。但我失去了商店!
/// application.js
var App = Ember.Application.createWithMixins({
...
ready: function () {
this.preLoadData();
},
...
});
/// load_data.js
function preLoadData() {
var store = this.Store;
if (DEBUG) { console.log('preLoadData > this=%o store=%o', this, store); }
store.find('node'); // was this.Node.find();
}
App.preLoadData = preLoadData;
但是this.Store
不是商店(我不知道那是什么!)。也尝试使用this.store
,但它未定义,所以我得到:
Uncaught TypeError: Cannot call method 'find' of undefined
我甚至尝试过:
// inject the store into all components
SettingsApp.inject('component', 'store', 'store:main');
无论魔法是什么意思(什么是'component'
?它是组件'component'
,还是任何组件?什么是组件?),但没有帮助。
如何直接从我的App
?
编辑:我在文档中找到component,但这不是我需要的:我想从App
访问商店。
答案 0 :(得分:1)
您正尝试从Application对象访问存储,这是不可能的。你可以使用这样的东西,
var store = App.__container__.lookup('store:main')
但我相信您想要使用一些预加载的数据来初始化您的应用。您可以使用初始化程序来完成此类工作。
Ember.Application.initializer({
name: "preload data",
initialize: function(container, application) {
var store = container.lookup('store:main');
store.find('node');
}
});