Ember.js:如何从App对象访问商店

时间:2013-10-16 10:30:29

标签: ember.js ember-data

从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());

2 个答案:

答案 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检索)来绕过容器,但这会破坏容器的用途。