Где я могу инициализировать переменные модуля? - программирование
Подтвердить что ты не робот

Где я могу инициализировать переменные модуля?

Я пытаюсь сделать что-то вроде этого:

angular.module('MyModule', ['ui'])
    .config(function($rootScope) {
        $rootScope.Gender = {
            'M': 'Male',
            'F': 'Female',
            'U': 'Unknown',
        };
    })

Но я получаю эту ошибку:

Непринятая ошибка: неизвестный поставщик: $rootScope из MyModule

Если я не могу получить доступ к $rootScope внутри моей конфигурации модуля, где подходящее место для инициализации переменных модуля?

4b9b3361

Ответ 1

Вы не можете вводить сервисы (здесь $rootScope) в блок конфигурации. Только константы и поставщики могут быть введены во время фазы конфигурации.

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

Ответ 2

Вместо использования $rootScope вы также можете использовать константу или значение angular:

angular.module('MyModule', ['ui']).constant( 'Gender', {
  'M': 'Male',
  'F': 'Female',
  'U': 'Unknown',
});

Постоянная никогда не может быть изменена, тогда как значение может. И вы можете вводить его там, где вам это нужно:

app.controller( 'MainController', function ( $scope, Gender ) {
  console.log( Gender.M );
});

По-моему. это кажется более "правильным" для переменных сайта, чем с использованием $rootScope.