5

从 Ember.Data 1.0 Beta 开始,我们必须使用 store.find('model') 而不是 App.Model.find()。如何访问 App 对象内的 store 对象?

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

2 回答 2

5

我已经使用它在我的主要 App 对象中获取商店。它不漂亮,但它完成了工作。

var store = App.__container__.lookup('store:main')
于 2013-10-16T14:38:08.750 回答
5

您可以创建一个将存储注入应用程序对象的初始化程序。

App.initializer({
    name: 'Inject Store',
    initialize: function(container, application) {
        container.injection('application:main', 'store', 'store:main');
    }
});

之后,您可以this.get('store')在应用程序中使用。当然,您可以通过简单地container.lookUp在应用程序对象上设置存储(通过 检索)来绕过容器,但这违背了容器的目的。

于 2013-10-16T14:48:28.633 回答