我在哪里可以初始化模块范围的变量?

时间:2013-01-27 22:13:19

标签: angularjs

我正在尝试做这样的事情:

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

但是我收到了这个错误:

  

未捕获错误:未知提供商:来自MyModule的$ rootScope

如果我无法访问模块配置中的$rootScope,那么在哪里可以初始化模块范围的变量?

2 个答案:

答案 0 :(得分:25)

您也可以使用角度常量或值:

,而不是使用$rootScope
angular.module('MyModule', ['ui']).constant( 'Gender', {
  'M': 'Male',
  'F': 'Female',
  'U': 'Unknown',
});

常量永远不能改变,而值可以。您可以在任何需要的地方注入它:

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

在我看来。对于网站范围的变量而言,这似乎比使用$rootScope更“合适”。

答案 1 :(得分:8)

您无法将服务(此处为$ rootScope)注入配置块。在配置阶段只能注入常量和提供者。

在您的情况下,正确的解决方案是使用运行块。只需更改配置即可运行,事情应按预期工作。