配置AngularJS模块-它如何影响应用程序中的其他模块?

配置AngularJS模块-它如何影响应用程序中的其他模块?,angularjs,angularjs-module,Angularjs,Angularjs Module,我有两个角度模块,A和B。 A没有DEP、一些配置和一些筛选器: angular.module('A', []) .config(function ($httpProvider) { // set common headers for $http requests $httpProvider.defaults.headers.common = {...}; }) .filter('myFilter', function () { /

我有两个角度模块,
A
B
A
没有DEP、一些配置和一些筛选器:

angular.module('A', [])
    .config(function ($httpProvider) {
    // set common headers for $http requests
        $httpProvider.defaults.headers.common = {...};
    })
    .filter('myFilter', function () {
        // create a filter
    });
B
依赖于
A
,因此它的变化类似于:

angular.module('B', ['A'])...
我知道
B
取决于
A
意味着我可以在
B
视图中使用
myFilter

问题是:
myFilter
中的代码是否受益于我在
A
模块的
config()
函数中设置的
$http
公共头(因为
myFilter
属于
A

当从
B
模块内部发出HTTP请求时,公共头是我在
A
内部设置的头,还是它们不受
A
内部配置的影响


这两个问题对我来说都很有意义:我在
A
模块中配置了一些公共标题,我将在
A
模块提供的过滤器中使用这些标题,但当我在
B
模块中时,我希望这些公共标题不会妨碍我;不过,当我在
B
视图中时,我希望能够使用
A
过滤器及其特定的公共标题。

以下是我的想法。与任何其他应用程序一样,$httpProvider在本质上也是单例的,这意味着对它的任何更改(包括任何模块)都会影响其他应用程序,或者换句话说,更改是全局性的。

在任何一个应用程序中,无论您使用什么模块,所有的
服务
工厂
提供商
都是单身人士


您正在使用
$httpProvider
,一个这样的单例。。。因此,就单例的本质而言,对提供者所做的任何配置都意味着所有模块都会受到影响。参见示例

angular.module("foo",[]).config(function($httpProvider){$httpProvider.test = 123});
angular.module("bar",["foo"])
  .config(function($httpProvider){console.log(httpProvider.test)}); //123

我认为Chandermani是正确的,若您只想为模块A添加头,那个么可能在.value/factory提供程序中有一个公共头的集合,它返回一个$http,修改这些头。因此,如果我必须做相反的事情,那就是为我的整个应用程序配置一些公共标题,也许最干净的方法是创建一个
configurator
模块来执行整个应用程序共享的配置。@leon是的,这将解决问题。尽管如此,我认为它的工作方式仍然很漂亮,因为我可以有一个模块,它有自己的模块功能,有他自己的对象配置,比如
$httpProvider
,在我看来,这将使它具有更高的可重用性。是的,看起来是这样的,但我想不出有多少情况下,每个模块都需要一个单独的$http对象。单个模块负责所有http请求是很常见的,这似乎是一种边缘情况。