Angularjs 在配置中使用工厂
我知道配置阶段会在服务可用之前运行,但我有一种情况,我需要使用Angularjs 在配置中使用工厂,angularjs,angularjs-factory,angularjs-provider,angularjs-config,Angularjs,Angularjs Factory,Angularjs Provider,Angularjs Config,我知道配置阶段会在服务可用之前运行,但我有一种情况,我需要使用myJsonDateTimeService注入$httpProvider.defaults.transformResponse,如下所示: angular.module('myJsonDateTimeInterceptor', ['myJsonDateTime']) .config(function($httpProvider, myJsonDateTimeService){ $httpProvider.defaults.tr
myJsonDateTimeService
注入$httpProvider.defaults.transformResponse
,如下所示:
angular.module('myJsonDateTimeInterceptor', ['myJsonDateTime'])
.config(function($httpProvider, myJsonDateTimeService){
$httpProvider.defaults.transformResponse.push(function(responseData){
myJsonDateTime.format(responseData); // Logic to change DateTime.
return responseData;
});
});
angular.module('myJsonDateTime', [])
.factory('myJsonDateTimeService', function(){
var factory = {
format: function(data) { ... }
};
return factory;
});
angular.module('myJsonDateTime', [])
.provider('myJsonDateTimeService', function(){
var format = function(data) { ... };
this.format = format;
this.$get = function() {
return { format: format };
};
});
问题是,myJsonDateTimeService
在其他地方用作服务,我希望在拦截器的配置中重用相同的逻辑,而不是复制格式代码
我也不知道如何创建一个可以使用工厂相同逻辑的myJsonDateTimeProvider
编辑1
正如建议的那样,我在一个提供程序中重建此工厂,如下所示:
angular.module('myJsonDateTimeInterceptor', ['myJsonDateTime'])
.config(function($httpProvider, myJsonDateTimeService){
$httpProvider.defaults.transformResponse.push(function(responseData){
myJsonDateTime.format(responseData); // Logic to change DateTime.
return responseData;
});
});
angular.module('myJsonDateTime', [])
.factory('myJsonDateTimeService', function(){
var factory = {
format: function(data) { ... }
};
return factory;
});
angular.module('myJsonDateTime', [])
.provider('myJsonDateTimeService', function(){
var format = function(data) { ... };
this.format = format;
this.$get = function() {
return { format: format };
};
});
不确定这是否是最好的方式,因为应该使用提供程序进行配置,而不是提供格式化等功能。工厂不能被注入配置中,工厂应该被重新写入
提供程序
,这将是可配置的工厂
,看看工厂不能被注入配置中,工厂应重新编写为提供程序
,可配置工厂
,查看