У меня есть среда разработки и производства, в которой мой URL отличается:
продукция:
www.exmaple.com/page
развитие:
dev.environment/project/page
Я знаю, что я могу установить базовый URL в AngularJS с помощью
<base href='/project/' />
но это не помогает мне здесь. Прежде чем загружать приложение 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; // '/project/'
configDeferred.resolve();
});
и в моем index.html:
<base ng-href="{{baseUrl}}" />
Похоже, что это не работает: когда я изменяю атрибут href тега на ng-href, он правильно загружает контент, но меняет URL-адрес на dev.environment/page
вместо dev.environment/project/page
UPDATE: Файл конфигурации:
{
"mode": "development",
"baseUrl": "/project/"
}