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

时间:2016-03-15 21:34:16

标签: 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:session');

它适用于控制器和路由,但生成的组件不会接收服务。

我该如何做到这一点?

我知道有些人会说让组件访问服务是不好的形式,但是,Ember核心团队再次建议控制器将被可路由的组件替换,在这种情况下它看起来非常合理。

我正在遵循这种技术来同时填充可路由的组件:http://emberigniter.com/should-we-use-controllers-ember-2.0/

谢谢!

2 个答案:

答案 0 :(得分:2)

尝试使用"重新打开" Ember.Component。 您可以查看reopen and reopenclass

的指南

示例:

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

答案 1 :(得分:0)

我们可以向组件注入服务。你试过以下吗?

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

<强> component.js

export default Ember.Component.extend({

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

    actions : {

    }
});