Как аннотировать зависимости во встроенном контроллере при настройке маршрутов приложения?

0

Я получаю следующую ошибку, если я не комментирую зависимости для встроенной функции контроллера для маршрута (я использую строгий режим 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'];

это работает, но просто хотел проверить, знает ли кто-нибудь умный короткий отрезок?

Теги:
dependency-injection
annotations

2 ответа

1
Лучший ответ

Пытаться

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.

  • 0
    Это сработало ! Большое спасибо :) Не пробовал, так как я думал, что это будет синтаксис массива вместо функции. Вы правы в том, что контроллеры разделены на отдельные файлы, но здесь у меня просто две строчки логики, поэтому мы не думали создавать дополнительные затраты на обработку другого файла.
  • 0
    Рад, что помог!
Показать ещё 1 комментарий
1

Чтобы добавить более подробную информацию, это ожидается для встроенных контроллеров.

См. Https://github.com/olov/ng-annotate/issues/50.

Либо не встройте их, либо добавьте controller:/* @ngInject */function(service1){... }.

/* @NgInject */сообщает ngannotate применять аннотацию здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню