从Ember.Data 1.0 Beta开始,我们必须使用store.find('model')而不是App.Model.find()。如何访问App对象中的商店对象?
var App = Ember.Application.create({
auth: function() {
return new Ember.RSVP.Promise(function(resolve, reject) {
// ... get token somehow ...
// how to get store?
this.store.find('user').then(function(users) {
App.set('user', users.get('firstObject');
resolve();
}, function(err) {
reject();
});
});
}
});
App.deferReadiness();
App.auth().then(App.advanceReadiness());
答案 0 :(得分:5)
我用过这个在我的主App对象中获取商店。它并不漂亮,但它完成了工作。
var store = App.__container__.lookup('store:main')
答案 1 :(得分:5)
您可以创建一个初始化程序,将存储注入应用程序对象。
App.initializer({
name: 'Inject Store',
initialize: function(container, application) {
container.injection('application:main', 'store', 'store:main');
}
});
之后您可以在应用程序中使用this.get('store')
。当然,您可以通过在应用程序对象上设置存储(通过container.lookUp
检索)来绕过容器,但这会破坏容器的用途。