ember初始化器不将存储注入组件

时间:2013-10-24 13:30:31

标签: ember.js

我有以下初始化程序无效:

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

该组件没有商店属性。我尝试了很多东西:

before: 'registerComponents'

但没有任何作用。

我做错了什么?

1 个答案:

答案 0 :(得分: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')

希望它有所帮助。