存储应用程序configuration设置
在AngularJS中存储应用程序configuration设置的最佳位置是什么? 这可能是像应用程序常量,查找等,可以从控制器和服务或工厂使用。 我可以创build一个单独的服务,存储和检索这些东西,但我想知道是否有另一个适当的地方来存储和检索这些东西。
你可以使用constant()提供者!
app.constant('myAppConfig', {ver: '1.2.2', bananas: 6, hammocks: 3, bananaHammocks: true});
这与Terry的解决scheme并不完全不同,但是常量不会改变,所以它们在其他提供者之前被应用。 另外,这个模块可以注入你的configurationfunction。
app.config(function(myAppConfig){ console.log(myAppConfig.bananaHammocks); });
玩的开心
不知道是否有一个“最好的方式”,但我个人使用的服务,这是一个简短的例子:
angular.module('myApp').factory('AppSettings', function() { return { language: 'en' } }); angular.module('myApp').controller('myController', ['AppSettings', function(AppSettings) { $scope.language = AppSettings.language; } ]);
您也可以使用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; });
然后在configuration中使用configProvider
:
angular.module('App').config( function(configProvider) {} );
在运行中,控制器,服务等作为config
:
angular.module('App').run( function(config) {} );
这里是一个示例链接和代码
定义:
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); } }; })
添加这个可以访问一个全局variables
app.run(function ($rootScope) { $rootScope.globalVariable = 'Amadou'; //global variable });
现在,如果你想从你的控制器使用它
function appNameCtrl($scope, $rootScope){ $rootScope.globalVariable = 'Modji'; }
在你看来
My name is {{globalVariable}}