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

Nik*_*lay 5 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());
Run Code Online (Sandbox Code Playgroud)

Jer*_*een 5

我用它来获取我的主App对象中的商店.它不漂亮,但它完成了工作.

var store = App.__container__.lookup('store:main')
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

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