4

動作していない次の初期化子があります。

Ember.onLoad 'Ember.Application', (Application) ->
  Ember.Application.initializer
    name: 'storeToComponent'
    initialize: (container, application) ->
      application.inject('component', 'store', 'store:main')

コンポーネントにはストア プロパティがありません。私は次のような多くのことを試しました:

before: 'registerComponents'

しかし、何も機能しません。

私は何を間違っていますか?

4

1 に答える 1

6

コンポーネントは常に何らかのコンテキスト (コントローラーなど) にあるため、コンポーネントで次のことを行うことで、そのコンテキストからストアにアクセスできます。

App.MyComponent = Ember.Component.extend({
  actions: {
    foo: function() {
      var store = this.get('targetObject.store');
    }
  }
});

ただし、コンポーネントは分離されていると考えられるため、特定のストアから依存関係を作成するのではなく、コンポーネントにデータを渡す必要があります。そうは言っても、コンポーネントにストアを挿入したい場合は、次のようにしてみてください。

Ember.onLoad 'Ember.Application', (Application) ->
  Ember.Application.initializer
    name: 'storeToComponent'
    before: 'registerComponents'
    initialize: (container, application) ->
      application.register('store:main', App.Store)
      application.inject('component', 'store', 'store:main')

それが役に立てば幸い。

于 2013-10-24T14:15:50.840 に答える