2013-10-16 23 views
5

Ember.Data 1.0 Beta以降、App.Model.find()ではなくstore.find( 'model')を使用する必要があります。どのようにAppオブジェクト内にオブジェクトを格納するためのアクセスを取得するには?Ember.js: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()); 

答えて

6

ストアをアプリケーションオブジェクトに挿入するイニシャライザを作成できます。

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

その後、アプリケーションでthis.get('store')を使用できます。もちろん、アプリケーションオブジェクトにストア(container.lookUpを介して取得)を設定するだけでコンテナを回避することはできますが、コンテナの目的を破ります。

5

これは私の主なAppオブジェクトにストアを取得するために使用しました。それはかなりではありませんが、それは仕事を完了します。

var store = App.__container__.lookup('store:main') 
+0

アプリコンテナは一般公開されていません。この問題に関してYehuda Katzの[this post](https://github.com/emberjs/ember.js/commit/5becdc4467573f80a5c5dbb51d97c6b9239714a8)を参照してください。あなたは前の答えに従ってストアを注入する必要があります。 – blimmer