Проблема минимизации angularjs с контроллером

Вот мой контроллер:

angular.module('domiciliations').controller('mandatsCtrl', ['$scope', 'Domiciliation', 'logger', function ($scope, Domiciliation, logger) {
    $scope.mandats = Domiciliation.query();

    $scope.fullName = function () {
        return this.Person ? 'test' : 'test2'
    }

    $scope.isNextDisabled = function () {
        return false;
    }

    $scope.isPrevDisabled = function () {
        return true;
    }

    $scope.next = function () {
        logger.info("test");
    }
}]);

При минимизации я получаю ошибку:

Error: Unknown provider: nProvider <- n

Теперь, если я добавлю следующую строку после моего контроллера, то это будет работать:

mandatsCtrl.$inject = ['$scope', 'Domiciliation', 'logger'];

Я думал, что суть объявления типа массива в функции контроллера заключается в том, чтобы избежать необходимости использовать $inject.... Я что-то пропустил?

1 ответ

Решение

Если бы вам пришлось минимизировать код JavaScript для контроллера, все его аргументы функции также были бы минимизированы, и инжектор зависимостей не смог бы правильно идентифицировать сервисы. Есть два способа обработки минификации в угловых

1)Just assign an array with service identifier strings into the $inject property of the controller function
 mandatsCtrl.$inject = ['$scope', 'Domiciliation', 'logger'];

2) Using bracketnotation
var mandatsCtrl= ['$scope', 'Domiciliation','logger' function($scope, $Domiciliation,logger) { /* constructor body */ }];

http://docs.angularjs.org/tutorial/step_05

Другие вопросы по тегам