Я получаю следующую ошибку, если я не комментирую зависимости для встроенной функции контроллера для маршрута (я использую строгий режим DI, а все остальные коды аннотируются, так что js-minification не нарушает мой код):
https://docs.angularjs.org/error/ $ injector/strictdi? p0 = function (AuthService, %20 $ state
Вот код маршрута выхода из системы:
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider', '$urlRouterProvider) {
$stateProvider.state('logout', {
url: '/logout',
controller: function(AuthService, $state) {
AuthService.logout();
$state.go('login');
}
}
}]);
Есть ли способ объявить встроенную аннотацию для вышеупомянутых двух зависимых сервисов (AuthService, $ state) встроенного контроллера?
Я знаю, как работать:
.state('logout', {
url: '/logout',
controller: LogoutController
});
function LogoutController (AuthService, $state) {
AuthService.logout();
$state.go('login');
}
LogoutController.$inject = ['AuthService', '$state'];
это работает, но просто хотел проверить, знает ли кто-нибудь умный короткий отрезок?
Пытаться
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider.state('logout', {
url: '/logout',
controller: ['AuthService', '$state', function(AuthService, $state) {
AuthService.logout();
$state.go('login');
}]
}
}]);
Не уверен, что это сработает. Обычно мы разделяем наши контроллеры на файлы для удобства использования, вместо того, чтобы писать их inline в файле config.route.js.
Чтобы добавить более подробную информацию, это ожидается для встроенных контроллеров.
См. Https://github.com/olov/ng-annotate/issues/50.
Либо не встройте их, либо добавьте controller:/* @ngInject */function(service1){... }
.
/* @NgInject */сообщает ngannotate применять аннотацию здесь.