Подтвердить что ты не робот

Сохранение настроек конфигурации приложения

Какое лучшее место для хранения настроек конфигурации приложения в AngularJS? Это могут быть такие вещи, как константы приложений, поисковые запросы и т.д., Которые могут использоваться как от контроллеров, так и от сервисов или фабрик. Я мог бы создать отдельную службу, которая хранит и извлекает эти вещи, но мне было интересно, есть ли другое место для их хранения и извлечения.

4b9b3361

Ответ 1

Вы можете использовать поставщик константа()!

app.constant('myAppConfig', {ver: '1.2.2', bananas: 6, hammocks: 3, bananaHammocks: true});

Это не сильно отличается от решения Terry, но константы не изменяются, поэтому они применяются перед другими поставщиками. Кроме того, этот модуль может быть введен в вашу конфигурационную функцию.

app.config(function(myAppConfig){
    console.log(myAppConfig.bananaHammocks);
});

получайте удовольствие

Ответ 2

Не уверен, есть ли "лучший способ", но я лично использую службу, вот сокращенный пример:

angular.module('myApp').factory('AppSettings', function() {
  return {
    language: 'en'
  }
});

angular.module('myApp').controller('myController', ['AppSettings', 
  function(AppSettings) {
    $scope.language = AppSettings.language;
  }
]);

Ответ 3

Вы также можете использовать provider вместо service и легко использовать везде.

angular.module('App', []).provider('config',
function() {
    var conf = {
        ver: '1.2.2',
        bananas: 6,
        hammocks: 3,
        bananaHammocks: true,
        baseUrl:'data/'
    };

    conf.$get = function () {
        delete conf.$get;
        return conf;
    };

    return conf;
});

Затем используйте в config как configProvider:

angular.module('App').config( function(configProvider) {} );

В run, контроллеры, службы, ect как config:

angular.module('App').run( function(config) {} );

Вот пример ссылка и code

Ответ 4

Определение:

angular.module('starter.config', [])
.constant('appConfig', {
  'backend': 'http://localhost:3000/v1'
});

Использование:

angular.module('starter.services', ['starter.config'])

.factory('Locations', function(appConfig, $http) {
  return {
    all: function(successCb, errorCb) {
      $http.get(appConfig.backend + '/locations.json')
      .success(successCb)
      .error(errorCb);
    },
    get: function(locationId, successCb, errorCb) {
      $http.get(appConfig.backend + '/locations/'+ locationId +'.json')
      .success(successCb)
      .error(errorCb);
    }
  };
})

Ответ 5

Добавьте это, чтобы иметь доступ к глобальной переменной

app.run(function ($rootScope) {
    $rootScope.globalVariable = 'Amadou'; //global variable
});

Теперь, если вы хотите использовать его с вашего контроллера

function appNameCtrl($scope, $rootScope){
    $rootScope.globalVariable = 'Modji';
}

В представлении

My name is {{globalVariable}}