我正在使用angular構建單頁應用程序。我們使用持續集成與幾個Dev和QA環境。這意味着每次我在不同的環境中部署應用程序時,我需要更新一些配置參數,例如SPA baseUrl,休息api url或url,以供我的oauth服務器使用。
爲了實現這一點,我們的CI引擎會在我們即將部署時爲每個環境生成一個帶有正確參數的config.json文件。爲了得到這個我創建了一個非常簡單的服務:
(function() {
'use strict';
angular
.module('app.core')
.factory('config', config);
config.$inject = ['$http'];
function config($http) {
return {
load: load
};
//////////
function load() {
return $http.get('assets/config/config.json');
}
}
}());
我的大部分服務都是通過供應商在配置階段配置。這是問題出現的地方。如您所知,在此階段無法注入服務,但我希望使用config服務來爲我的提供商設置正確的URL和參數。
有沒有適當的方法來做到這一點?
到目前爲止,我唯一可以考慮的是將這些配置參數嵌入到我的模塊創建文件中,以便它們隨時可以使用。這似乎很難看,因爲我不希望任何外部進程到我的應用程序修改我的源代碼。
感謝您的想法!我沒有考慮將它們設置爲常量,然後在我的配置階段使用。我只會補充一點,如果你將這些常量設置爲運行塊中的* $ rootContext *(例如:'$ rootScope.config = config;'),那麼它們可用於每一個控制器,從而減少了你需要明確地將它們注入到其他組件中。 – jbernal
我沒有考慮過這個選項。我會試一試:)謝謝! – Tamy