烬。将插件服务注入其他“区域”

时间:2016-06-23 08:17:59

标签: service ember-cli

我如何将插件服务注入其他“地方”?

例如,如果我安装了一个注入控制器和插件的插件。组件如下:

export default {
  name: 'notification-messages-service',
    initialize() {
    let application = arguments[1] || arguments[0];
    application.register('notification-messages:service', NotificationMessagesService);

     ['controller', 'component'].forEach(injectionTarget => {
        application.inject(injectionTarget, 'notifications', 'notification-messages:service');
    });
}};

我如何将相同的服务(相同的单身)注入服务& 路线 - 我的要求实际上是注入单个服务,服务:消息

我不相信我可以使用

notifications: Ember.inject.service();

因为在插件中服务被写为:

export default Ember.ArrayProxy.extend({...});

当然,我可以更改插件,但是一旦插件更新,我的更改就会消失。

感谢您的回答,N

2 个答案:

答案 0 :(得分:0)

notifications: Ember.inject.service('notification-messages');

应该有效

service的参数是可选的,如果服务名称与属性名称相同,但它总是使用它

正常服务的

P.S。代码 在你的案例代码

   ['controller', 'component'].forEach(injectionTarget => {
        application.inject(injectionTarget, 'notifications', 'notification-messages:service');
    });

表示控制器/组件只获取新属性notifications 因此,您可以使用控制器/组件内部 this.get('notifications')

答案 1 :(得分:0)

我可以通过使用以下代码创建新的初始化程序,将插件注入我的特定服务:

export default {
name: 'inject-ember-notification-service',

initialize: function(container, app) {
    app.inject('services:message', 'notifications', 'notification-messages:service');
}
};

非常愚蠢,灰烬!

感谢大家的投入。