29

尝试为模块设置一些助手值。尝试了服务和价值,但没有帮助:

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'
        });
}]);

我做错了什么?

4

3 回答 3

43

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

AngularJS文档(部分:“模块加载和依赖项”)对此进行了深入了解:

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

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

运行块- 在创建注入器后执行并用于启动应用程序。只有实例和常量可以注入运行块。这是为了防止在应用程序运行时进行进一步的系统配置。

于 2012-10-15T20:32:24.290 回答
17

而不是.value你可以使用.constant. 然后您可以.config部分使用您的服务。

于 2012-12-23T17:42:50.287 回答
1

您的辅助方法被调用templatePath,并且您在内部调用它.configas getTemplatePath。不应该是:

when('/', {
            templateUrl: helpers.templatePath('dashboard'),
            controller: DashboardController
     }) 
于 2016-01-25T22:48:12.553 回答