Какое лучшее место для хранения настроек конфигурации приложения в AngularJS? Это могут быть такие вещи, как константы приложений, поисковые запросы и т.д., Которые могут использоваться как от контроллеров, так и от сервисов или фабрик. Я мог бы создать отдельную службу, которая хранит и извлекает эти вещи, но мне было интересно, есть ли другое место для их хранения и извлечения.
Сохранение настроек конфигурации приложения
Ответ 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) {} );
Ответ 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}}