2016-02-18 52 views
0

我有多个angularjs项目,每个项目都包含多个页面。 我需要为$ http共享一些常见配置,其中包含一些常见的配置设置和跨这些项目的响应拦截器。 如何跨多个angularjs项目共享此通用作品。每个项目加载angularjs并通过获取bower_dependencies来构建。跨多个angularjs项目共享通用功能/配置

我不知道每个项目中模块的绝对路径。

具体而言,我需要将withCredentials设置为true,并在请求中设置一些常用标头,并为所有项目设置通用响应拦截器。有没有办法分享这个?

我可以建立一个通用的angularjs模块吗?如果是的话,那么在bower_dependencies的情况下如何工作?

+0

你可以把它分割成两个部分:如果您使用的呼噜声,然后使用类似咕噜-NG-常数,它可以配置属性,并创建一个配置模块你可以注射到任何你需要的地方。然后为响应拦截器模块创建一个单独的项目,并让每个角度项目都通过bower引入该响应拦截器模块。 – DavidA

回答

0

你可以做到这一点在配置阶段

app.config(['$httpProvider',function ($httpProvider) { 
    $httpProvider.defaults.withCredentials = true; 
    // REST OF DEFAULTS 
}]); 

了解更多关于$httpProviderherehere

0

你所描述就是为什么模块是如此方便

每个模块都可以有它自己的配置或运行阶段,服务等,以便将您需要的内容封装到一个模块中,并将该模块注入多个项目与您已经拥有的其他第三方模块没有区别即

angular.module('myUniversalModule', []) 
    .constant('someconstant',123) 
    .factory('myUniversalInterceptor', function() { 
    var myInterceptor = { 
     ....  
    }; 
    return myInterceptor; 

    }).config(['$httpProvider', function($httpProvider) { 
     $httpProvider.interceptors.push('myUniversalInterceptor'); 
     $httpProvider.defaults.withCredentials = true; 
    } 
    ]); 

然后在任何应用程序注入

angular.module('thisMainApp', ['myUniversalModule']) 
     .config(.... 
     .run(.... 
     .factory(.... 
     .constant(... 
     .controller(...