Ember.js 如何将服务注入Ember JS中的每个组件

Ember.js 如何将服务注入Ember JS中的每个组件,ember.js,Ember.js,我有一个会话服务,我想将它注入到每个组件中,根据文档,这应该可以工作: app.register('service:session', Session, { singleton: true }); app.inject('controller', 'session', 'service:session'); app.inject('route', 'session', 'service:session'); app.inject('component', 'session', 'service:

我有一个会话服务,我想将它注入到每个组件中,根据文档,这应该可以工作:

app.register('service:session', Session, { singleton: true });
app.inject('controller', 'session', 'service:session');
app.inject('route', 'session', 'service:session');
app.inject('component', 'session', 'service:session');
它适用于控制器和路由,但生成的组件不会获取服务

我怎样才能做到这一点

我知道有些人会说,让组件访问服务是一种糟糕的形式,但是,恩伯核心团队再次建议,控制器将被可路由组件所取代,在这种情况下,这似乎是完全合理的

同时,我采用此技术填充可布线组件:


谢谢

我们可以向组件注入服务。你有没有试过以下几点

service : Ember.inject.service('service')
component.js

export default Ember.Component.extend({

    service : Ember.inject.service('service'),

    actions : {

    }
});
尝试使用“重新打开”Ember.Component。 你可以去找导游

例如:

Ember.Component.reopen({
    service: Ember.inject.service()
});

如果您使用的是Ember CLI,则会自动注册服务。这应该是可行的。是的,我使用的是ember CLI,上面的方法通常是有效的,只是不适用于组件。不确定这是一个bug,还是Ember purism试图强迫您将组件与全局范围隔离。谢谢,但问题特别是生成的组件,即那些我没有定义它们的.js文件的组件。