Как прочитать конфигурационный файл json внутри модуля angular?
Я пишу приложение javascript, AngularJS, используя typescript. Также я использую хрюканье для строительства. На самом деле я начал с ng шаблона.
Теперь предположим, что у меня есть файл config.json
, как показано ниже -
{
"app": "abc",
"login": "xyz"
}
Я хочу, чтобы некоторые переменные в моем приложении настраивались. Поэтому в каком-то месте я мог бы использовать что-то вроде:
var loginUrl : string = "def?pqr="+config.app;
Теперь, как я могу прочитать эту конфигурацию в своих файлах javascript? Я ищу лучший ответ. Я хорошо разбираюсь в подстановке на этапе grunt build
.
Примечание. Файл конфигурации присутствует на самом клиенте, то есть нет необходимости загружать его с сервера отдельно.
Ответы
Ответ 1
В моем случае я использую grunt для вставки конфигурационного файла (совместно используемого сервером) в модуль констант angular:
Используя grunt-preprocess:
У меня есть config.tpl.js с:
angular.module('app.config', [])
.constant('appConfig', {
// clientside specific constants
var1 : 'value1',
var2 : [1,2,3],
sharedVars : /* @echo SHARED_VARS */
});
Затем в моем gruntFile:
preprocess: {
options: {
context: {
SHARED_VARS: grunt.file.read('config.json'),
}
},
config: {
src: 'src/config.tpl.js',
dest: 'src/config.js' // true file generated and loaded in index.html
}
},
Таким образом, вы можете вставить полный файл конфигурации в модуль констант angular или выбрать только нужные вамры.
Ответ 2
Для кода на стороне клиента вы должны просто использовать $http.get
, чтобы получить json файл с сервера. Предполагая, что json файл доступен http в /manage/config.json
, вы должны:
$http.get('/manage/config.json').then((res)=>{
var config = res.data;
});
$http автоматически обрабатывает json для вас.
Ответ 3
вот что я сделал
var initInjector = angular.injector(['ng']);
var $http = initInjector.get('$http');
var configModule = angular.module('portalConfig', []);
$http.get('../config/Settings.json').then(
function (response) {
configModule.value('config', response.data);
}
);
а затем предположим, что ваш модуль приложения foo then
angular.module('foo',['portalConfig'])