2013-08-21 103 views
2

我有兩個角模塊,ABA沒有DEPS,一些配置和一些過濾器:配置AngularJS模塊 - 它如何影響應用程序中的其他模塊?

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意味着我可以用myFilterB意見。

的問題是:在myFilter利益代碼從$http常見的頭我設置了A模塊的config()函數內(自myFilter屬於A)?

當在B模塊中發出HTTP請求時,是我在A內設置的公共頭還是它們不受A內部配置的影響?

真到這兩個問題使得足夠的理智對我說:我Config中的A模塊,我會的A模塊提供過濾器內使用一些常見的標題,但我想我的方式時,這些相同的通用報頭我在B模塊中;仍然,當我在B視圖內時,我希望能夠使用A過濾器及其特定的常見標題。

回答

1

這是我的想法。像任何其他角度$httpProvider本質上也是單身的,這非常好地意味着從任何地方對任何模塊進行任何改變,包括任何模塊都會影響其他模塊,或者換句話說改變是全局的。

+1

我覺得Chandermani是正確的,如果你想添加頁眉只爲模塊A,那麼也許有一個.value的/工廠提供,這將返回修改過的頭一個的$ HTTP共同頭的集合。 – leon

+0

好的。因此,如果我必須做相反的事情,那就是爲我的整個應用程序配置一些常見的標題,也許最簡單的方法是創建一個「configurator」模塊,該模塊執行整個應用程序共享的配置。 – whatyouhide

+0

@leon是的,這將解決問題。儘管如此,我認爲我認爲它的工作方式仍然更漂亮,因爲我可以擁有一個具有自己的模塊化功能的模塊,並具有他自己的配置,比如'$ httpProvider',這使得它在我看來更具可重用性。 – whatyouhide

1

在任何一個應用程序,不管你拉什麼模塊,所有servicesfactoriesproviders單身

您使用的是$httpProvider,一個這樣的單身......因此,由單身人士的本質,做供應商的任何配置意味着所有模塊都受到影響

0

是的,這是它的工作原理。看例子。

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