我有以下初始化程序无效:
Ember.onLoad 'Ember.Application', (Application) ->
Ember.Application.initializer
name: 'storeToComponent'
initialize: (container, application) ->
application.inject('component', 'store', 'store:main')
该组件没有商店属性。我尝试了很多东西:
before: 'registerComponents'
但没有任何作用。
我做错了什么?
答案 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')
希望它有所帮助。