Как установить базовый URL AngularjJS динамически в зависимости от выбранной переменной среды?
У меня есть среда разработки и производства, в которой мой URLотличаются:
производство:
www.exmaple.com/page
развитие:
dev.environmenthttps://stackoverflow.com/project/page
Я знаю, что могу установить базовый URL в AngularJS с помощью
но это нене помогите мне здесь. Перед загрузкой приложения AngularJS я получаю файл конфигурации (в файле app.js с.run
оператор, который читает переменную, которая имеет среду:
]).run([
'$rootScope',
'$http',
function (
$rootScope,
$http
) {
var configDeferred = $q.defer();
// fetch config and set the API
$http.get('config.json').then(function(response) {
$rootScope.config = response.data;
configDeferred.resolve();
});
// Wait for the config to be loaded, then go to state
$rootScope.$on('$stateChangeStart', function (event, next, current) {
event.preventDefault();
$q.all([configDeferred.promise]).then(function() {
$state.transitionTo(next.name);
return;
});
});
Есть ли способ динамически установить базовый URL, основанный на извлеченном файле конфигурации в AngularJS (может быть, с .htaccess)?
Попытка 1: Попробуй получить конфиг через.run
и установите базовый URL через ng-href:
Отредактируйте следующую строку кода в моем app.js:
// fetch config and set the API
$http.get('config.json').then(function(response) {
$rootScope.config = response.data;
$rootScope.baseUrl = response.data.baseUrl; // 'https://stackoverflow.com/project/'
configDeferred.resolve();
});
и в моем index.html:
Похоже, это не работает: когда я изменяю атрибут href тега на ng-href, он корректно загружает контент, но изменяет мой URL-адрес наdev.environment/page
вместоdev.environmenthttps://stackoverflow.com/project/page
ОБНОВИТЬ: Конфигурационный файл:
{
"mode": "development",
"baseUrl": "https://stackoverflow.com/project/"
}