1

我知道配置阶段在服务可用之前运行,但我有一种情况需要使用 amyJsonDateTimeService来注入$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 };
    };
});

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

4

0 回答 0