常量未注入config()

时间:2016-01-20 13:09:27

标签: angularjs

我正在尝试模块化我的第一个角度项目。需要使我的模块视图相对于此模块。在下面的示例中,我有样本主模块,需要控制器模块。我可以将VIEWS_PATH注入控制器,但不注入config()。据我所知,constant可以注入config()。这有什么问题?

mainModule.js

angular.module('mainModule', ['app.main.controllers'])
.constant('VIEWS_PATH', 'js/modules/main/views');

controllersMain.js

angular.module('app.main.controllers', [])
.config(function($routeProvider, VIEWS_PATH) { // error
  $routeProvider.when('/hello', {
    templateUrl: VIEWS_PATH+'/hello.html',
    controller: 'HelloController'
  })
})
.controller('HelloController', function($scope, VIEWS_PATH) {
  $scope.hello = 'Hello World!';
  console.log('VIEWS_PATH: '+VIEWS_PATH); // ok
});

1 个答案:

答案 0 :(得分:2)

这是因为您在一个模块中定义了VIEWS_PATH常量 - mainModule并且您尝试在另一个模块中使用它 - app.main.controllers

如果您希望在该模块的配置中使用该常量,可以在app.main.controllers模块中定义该常量。

angular.module('app.main.controllers', [])
.constant('VIEWS_PATH', 'js/modules/main/views')
.config(function($routeProvider, VIEWS_PATH) { 
  $routeProvider.when('/hello', {
    templateUrl: VIEWS_PATH+'/hello.html',
    controller: 'HelloController'
  });
});

app.main.controllers模块中的常量将在mainModule中工作,因为它在mainModule中列为依赖项,如下所示。

angular.module('mainModule', ['app.main.controllers']);

例如,我们说我们定义了两个模块 - MyApp& SomeModule

var someModule =  angular.module('SomeModule',['someOtherModule']);
someModule.constant('SOME_CONSTANT','SomeValue');

var myApp = angular.module('MyApp',['SomeModule']);

myApp.constant('TEST_CONSTANT','Test');
myApp.config(function(SOME_CONSTANT){
  console.log("from dependent module "+SOME_CONSTANT);
});

通过上述设置,来自SOME_CONSTANT的{​​{1}}可以在SomeModule中使用,但来自MyApp的{​​{1}}无法在TEST_CONSTANT中使用。

这里有一个样本Pen