我如何将插件服务注入其他“地方”?
例如,如果我安装了一个注入控制器和插件的插件。组件如下:
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
答案 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');
}
};
非常愚蠢,灰烬!
感谢大家的投入。