Как прочитать конфигурационный файл 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'])