在config

时间:2016-03-04 13:25:53

标签: angularjs angularjs-factory angularjs-provider angularjs-config

我知道配置阶段在服务可用之前运行,但是我需要使用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;    
});

问题是myJsonDateTimeService在其他地方用作服务,我想在拦截器的配置中重用相同的逻辑,而只是复制格式代码。

我也不知道如何创建一个可以使用相同工厂逻辑的myJsonDateTimeProvider

修改1

正如所建议的那样,我在这样的提供商中重建了这个工厂:

angular.module('myJsonDateTime', [])
.provider('myJsonDateTimeService', function(){
    var format = function(data) { ... };
    this.format = format;

    this.$get = function() {
        return { format: format };
    };
});

不确定这是否是最佳方式,因为提供者应该用于配置而不提供格式化等功能。

0 个答案:

没有答案