Внедрение зависимостей в AngularJS значения внутри module.config

Попытка установить значение некоторых помощников для модуля. Пробовал с сервисом и стоимостью, и это не помогло:

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 ответа

Решение

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

Документация AngularJS (раздел: "Загрузка и зависимость модуля") дает представление об этом:

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

Блоки конфигурации - выполняются на этапе регистрации и настройки провайдера. Только провайдеры и константы могут быть введены в блоки конфигурации. Это необходимо для предотвращения случайного создания служб до их полной настройки.

Блоки запуска - выполняются после создания инжектора и используются для запуска приложения. Только экземпляры и константы могут быть введены в блоки выполнения. Это должно предотвратить дальнейшую настройку системы во время выполнения приложения.

Вместо .value ты можешь использовать .constant, Тогда вы можете использовать свой сервис в .config часть.

Ваш вспомогательный метод называется templatePath и вы звоните внутри .config как getTemplatePath, Не должно ли это быть:

when('/', {
            templateUrl: helpers.templatePath('dashboard'),
            controller: DashboardController
     }) 
Другие вопросы по тегам