2016-06-23 9 views
0

アドオンサービスを他の場所に挿入するにはどうすればよいですか?例えばEmber。追加の「エリア」にアドオンサービスを注入する

、私はコントローラに注入アドオンをインストールする場合、以下のコードで&コンポーネント:私は、サービス & ルートに同じサービス(同じシングルトン)を注入する方法を

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 ので、新しいプロパティを取得することを意味します私の特定のサービスにアドオンを追加するには、以下のコードを使用して新しいイニシャライザを作成します:

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

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

Fiendishl鈍い、恥ずかしがり屋!

あなたのご意見をお寄せいただきありがとうございます。

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

serviceため

のparamを動作する必要があるプロパティ名と同じサービスの場合は、オプションの名前であるが、それは常にそれを

P.S.を使用ベティですあなたの場合、コード内の通常のサービス ため上記コードが

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

コントローラ/コンポーネントはちょうどあなたが、私は注入することができた this.get('notifications')

+0

残念ながら、注射は動作しません(私はthat1を試してみました)。 OPのように、サービスは 'ArrayProxy'と書かれています。 'this.get( 'notifications')'は 'undefined'を返します – ninety

+0

@ninety - どのアドオンを使用しますか? –

+0

ember-cli-notifications – ninety

関連する問題