我有一个使用$state.go
跳转到状态的提供程序配置。当我使用$state
作为函数参数时,它可以工作,但当我尝试修改函数参数以支持缩小时,例如
.provider('Navigation',["$stateProvider","$state",function($stateProvider,$state)
然后我得到以下解决依赖性错误:
Uncaught Error: [$injector:modulerr] Failed to instantiate module apfPrototypeJs due to:
Error: [$injector:unpr] Unknown provider: $state
如何规避这个问题?
答案 0 :(得分:1)
您只能在提供程序中注入providers
,因为此时尚未实例化服务,并且因为提供程序方法特别用于配置,所以只能在应用程序的配置阶段访问它们,它能够注入任何服务是没有意义的。但是你可以在通过$get
属性定义的提供者的构造函数中注入任何服务(而不是提供者)。
即
.provider('Navigation',["$stateProvider",function($stateProvider) { //Inject provider here
this.$get = ["$state", function($state){ //Inject $state here
console.log($state)
}]
}]);
作为替代语法(使用$ inject支持缩小),您可以: -
.provider('Navigation', function(){
this.$get = navigationService;
navigationService.$inject = ['$state'];
function navigationService($state) {
console.log($state)
}
}]);