Angularjs 国际奥委会最佳做法
当需要根据环境使用不同的服务/工厂实现时,AngularJS的最佳实践是什么 假设我有一个服务Angularjs 国际奥委会最佳做法,angularjs,dependency-injection,inversion-of-control,Angularjs,Dependency Injection,Inversion Of Control,当需要根据环境使用不同的服务/工厂实现时,AngularJS的最佳实践是什么 假设我有一个服务MessageService,它正在注入一些其他服务,但是基于设备/平台,它应该使用WebService而不是MobileService 我现在做的是: angular .module('message') .service('MessageService', messageService); var service = 'WebService'; if (mobileDe
MessageService
,它正在注入一些其他服务,但是基于设备/平台,它应该使用WebService
而不是MobileService
我现在做的是:
angular
.module('message')
.service('MessageService', messageService);
var service = 'WebService';
if (mobileDevice) {
service = 'MobileService';
}
messageService.$inject = [service];
function messageService(service) {
service.call(); // use the shared interface for both services inside this service
}
有没有更好更优雅的方法来实现这一点?您可以使用模块的'config'块,使用下面的'provider'来实现这一点-
angular.module('app').config(['$provide','$injector','mobileDevice',',
功能($provide、$injector、mobileDevice){
$provide.value('MessageService',(mobileDevice)?$injector.get('MobileService'):$injector.get('WebService');
}
]);代码>