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

当需要根据环境使用不同的服务/工厂实现时,AngularJS的最佳实践是什么

假设我有一个服务
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');
}
]);