2016-05-30 2 views
1

AngularJSの文書によれば、注入プロバイダはmodule.configにしかないようです。 はしかし、私はそのプロバイダServiceXProviderを使用して、いくつかのサードパーティのサービスを構成し、このようにそれを設定する必要があります。

ServiceXProvider.format = function format(x) { return $filter('date')(x, "yyyy-MM-dd"); }

$filterは明らかサービスではなく、プロバイダであり、私はmodule.configに注入することはできません。

このシナリオで妥当な回避策はありますか?

+1

'run()'ブロックで試してみてください。 – charlietfl

+0

@charlietflを注入することができます。これは少なくとも私の場合は良いアイデアです。ありがとうございました! –

答えて

1

あなたは@charlietflはそれがmodule.run()(ないプロバイダはなく、インスタンス)でServiceXインスタンスを注入するために、この場合には可能であった示唆したように、あなたがサービス

+0

私はプロバイダ自体を注入することができず、サービスのインスタンスを注入することができなかったことが判明しました。 ServiceXの実装のために、 'format'メソッドをインスタンス上で設定し、プロバイダ上では設定しませんでした。私はこの問題を解決するのに役立ったので、私はあなたの答えを受け入れています。 –

1

を注入することができますrun()ブロック内のプロバイダオブジェクトを更新することができます。

だから

module.config(function (ServiceXProvider, $filter) { 
    ServiceXProvider.format = function format(x) { return $filter('date')(x, "yyyy-MM-dd"); } 
}); 

はそれが完璧ではないですが、私に関する限り、それは動作します

module.run(function (ServiceX, $filter) { 
    ServiceX.format = function format(x) { return $filter('date')(x, "yyyy-MM-dd"); } 
}); 

になりました。 ServiceXProviderは後でServiceXになりました。

関連する問題