如果我没有为路线的内联控制器功能注释依赖关系,我会收到跟踪错误(我使用严格的DI模式,所有其他代码都被注释,以便js-minification并没有破坏我的代码):
https://docs.angularjs.org/error/ $注射器/ strictdi?P0 =函数(AuthService,%20 $状态
这是注销路线代码:
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'];
这可行,但只是想结账,是否有人知道任何聪明的捷径?
答案 0 :(得分:1)
尝试
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider.state('logout', {
url: '/logout',
controller: ['AuthService', '$state', function(AuthService, $state) {
AuthService.logout();
$state.go('login');
}]
}
}]);
不确定这是否有效。通常我们将控制器分成文件以便于使用,而不是将它们内联在config.route.js文件中。
答案 1 :(得分:1)
只是为了在这里添加更多细节,这对于内联控制器是可取的。
请参阅https://github.com/olov/ng-annotate/issues/50。
要么不内联它们,要么添加申请controller: /* @ngInject */ function(service1){ ... }
。
/ * @ngInject * /告诉ngannotate在这里应用注释。