4

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

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

该组件没有 store 属性。我尝试了很多事情,例如:

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 回答