【发布时间】:2017-05-10 11:18:07
【问题描述】:
我有一个使用 MapProvider 的现有应用程序,如下所示:
mapModule.factory('MapProvider', ['$injector', function($injector) {
return $injector.get('GoogleMapsService');
}]);
此 MapProvider 在整个应用程序中广泛使用,并被注入到各种其他控制器和服务中(正确或错误)。
我现在需要添加一个BaiduMapsService,我已经能够使用它作为测试:
mapModule.factory('MapProvider', ['$injector', function($injector) {
if(true) {
return $injector.get('GoogleMapsService');
} else {
return $injector.get('BaiduMapsService');
}
}]);
并相应地翻转if 值。 (这两个服务都使用 TypeScript 接口,因此具有相同的方法)。现在,我需要向 API 添加一个$http 调用,它将根据提供的数据返回要使用的地图。如何使我的工厂异步, 不必将我所有的 MapProvider.someCallHere() 调用更改为 MapProvider.then(m => m.someCallHere())。
理想情况下,当MapProvider 在我的应用程序中注入时,它将能够使用异步数据进行解析(仅一次),然后注入必要的服务。
或者,有没有办法推迟/延迟加载 Angular,直到我进行 API 调用并在某处设置一些全局数据?
谢谢。
【问题讨论】:
标签: javascript angularjs dependency-injection angular-factory