【发布时间】:2016-02-18 06:31:16
【问题描述】:
我正在构建一个必须使用provider 配方的模块,因为它需要在运行前进行配置。我对模块化我的代码很感兴趣,所以我想将一些服务注入到提供程序中。我知道将providers 注入其他providers 很简单,但对于我想要实现的目标来说似乎有点过头了,所以我想注入factory。
据我了解,在运行时使用$injector 可以让我们通过angular 的createInternalInjector 方法访问instanceCache,该方法返回已实例化的服务。
在配置阶段使用$injector 时,您可以访问包含未实例化服务的providerCache。
我觉得这个假设一定是不正确的。在下面的代码中,$injector 在提供程序中使用,但通过在应用程序运行阶段调用的函数。我希望能够访问instanceCache,但我只能通过$injector.get 方法访问providerCache。
_tudModule.factory('wfTabletUsageDataCache', [
function () {
return {
addToLog: fn () { … }
}
}
])
_tudModule.provider('$tabletUsageData', [
'$injector', function $tabletUsageDataProvider ($injector) {
function getCacheFactory() {
return $injector.get('wfTabletUsageDataCacheProvider').$get();
}
function logInteraction(state, buttonId) {
getCacheFactory().addToLog(); // fn() called
}
]);
provider 中的$injector 会禁用对instanceCache 的访问吗?即使提供程序中的方法在config 阶段没有运行?
另外,我之前没有见过我使用$injector.get('wfTabletUsageDataCacheProvider').$get() 的方法。虽然可行,但这是实现此类功能的坏方法吗?
感谢您的任何指导。
【问题讨论】:
标签: javascript angularjs