AngularJS-получение констант модуля от контроллера
Я пытаюсь построить myApp.config модуль для хранения некоторых настроек для моего приложения, я написал конфиг.js file:
angular.module('myApp.config', [])
.constant('APP_NAME','My Angular App!')
.constant('APP_VERSION','0.3');
я добавил его в моем приложении.js (angular-seed):
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'myApp.controllers', 'myApp.config']).
я добавил его в индекс.html файл, и теперь я пытаюсь выяснить, как получить его в моих контроллерах, я попытался:
angular.module('myApp.controllers', ['myApp.config'])
.controller('ListCtrl', ['$scope', 'myApp.config', function($scope, $config) {
$scope.printme = $config;
}])
но я получаю:
неизвестный поставщик: myApp.configProvider
Я, наверное, здесь что-то не так, есть идеи ?
4 ответа:
Я не думаю, что это допустимо использовать имя модуля в инъекции, как это. Вы можете просто ввести константы по имени, хотя:
angular.module('myApp.controllers', ['myApp.config']) .controller('ListCtrl', ['$scope', 'APP_NAME', function($scope, appName) { $scope.printme = appName; }]);
Я думаю, что самый простой подход-добавить константу, используя литерал объекта. Это подходит для большинства случаев использования конфигурации приложения, я думаю, потому что он поддерживает сложный объект конфигурации. Элемент
constant
шаг также выполняется в начале, перед другими поставщиками есть.angular.module('myApp').constant('cfg', { url: 'https://myapi.com/v1/', httpTimeout: 5000 })
чтобы использовать его, вы просто впрыснуть
cfg
:angular.module('myApp').factory('user', function(cfg, $http){ // cfg and $http together at last })
следует также отметить, что решение SimplGy означает, что объект' cfg ' является константой, однако свойства этого объекта не являются. Это означает, что вы не можете переназначить ' cfg ' следующим образом:
cfg = { randomProperty: randomValue };
вы можете переназначить свойства объекта ' cfg ' следующим образом:
cfg.url = 'BrandNewURL.com'; cfg.httpTimeout = 30;
проверить использование констант в этом примере:
angular .module('abp001App', ['ngRoute']) .constant("myConfig", { "url": "http://localhost", "port": "80" }) .config(function ($routeProvider) { $routeProvider .when('/', { templateUrl: 'views/main.html', controller: 'MainCtrl' }) .otherwise({ redirectTo: '/' }); }) .controller('MainCtrl', function (myConfig) { // Do something with myConfig... });
посмотреть полный текст статьи на AngularJS константы передовой практикой здесь