Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在配置中使用工厂_Angularjs_Angularjs Factory_Angularjs Provider_Angularjs Config - Fatal编程技术网

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 };
    };
});

不确定这是否是最好的方式,因为应该使用提供程序进行配置,而不是提供格式化等功能。

工厂不能被注入配置中,工厂应该被重新写入
提供程序
,这将是可配置的
工厂
,看看工厂不能被注入配置中,工厂应重新编写为
提供程序
,可配置
工厂
,查看