AngularJS依赖注入module.config里面的值

时间:2012-10-15 20:19:17

标签: angularjs

尝试为模块设置一些帮助器值。尝试过服务和价值并没有帮助:

var finance = angular.module('finance', ['finance.services'])
    .value("helpers", {
        templatePath: function (name) {
            return '/areas/scripts/finance/templates/' + name + '/index.html';
        }
    })
    .config(['$routeProvider', 'helpers', function ($routeProvider, helpers) {
    $routeProvider.
        when('/', {
            templateUrl: helpers.getTemplatePath('dashboard'),
            controller: DashboardController
        })            
        .when('/people', {
            templateUrl: '/areas/scripts/app/people/index.html',
            controller: PeopleController
        })
        .otherwise({
            redirectTo: '/dashboard'
        });
}]);

我做错了什么?

3 个答案:

答案 0 :(得分:42)

问题是您正在尝试在AngularJS模块的配置块中注入值对象helpers,这是不允许的。您只能在配置块中注入常量和提供程序。

AngularJS documentation(部分:“模块加载和依赖性”)提供了对此的见解:

  

模块是配置和运行块的集合   在引导过程中应用于应用程序。在其中   最简单的形式模块由两种块的集合组成:

     

配置块 - 在提供商注册期间执行   和配置阶段。只能注入提供者和常量   到配置块。这是为了防止意外实例化   在完全配置之前的服务。

     

运行块 - 获取   在创建注射器后执行并用于启动注射器   应用。只有实例和常量才能注入运行   块。这是为了防止进一步的系统配置   申请运行时间。

答案 1 :(得分:17)

您可以使用.value代替.constant。然后,您可以在.config部分中使用您的服务。

答案 2 :(得分:1)

您的帮助方法名为templatePath,您在.config内将其称为getTemplatePath。不应该是:

when('/', {
            templateUrl: helpers.templatePath('dashboard'),
            controller: DashboardController
     })