angularjs未捕获错误:未知提供程序:
angularjs Uncaught Error: Unknown provider:
我需要一些帮助。我正在学习Angularjs并尝试创建一个服务。目前,我正在尝试分离他们模块中的所有内容。当我创建一个名为(bac.route manager)的新模块,并试图将其作为RouterService注入应用程序配置时,我遇到了一个错误,我不明白它的含义或如何修复它。我的所有其他东西似乎都能工作,除了当我试图添加这个模块时,这个未知的提供程序只有在我尝试注入它之后才开始显示。请提供任何帮助。
我的错误
Uncaught Error: Unknown provider: RouterService from bac
我的app.js文件
angular.module('bac', [
'bac.route-manager'
])
.config( function bacAppConfig( $routeProvider, RouterService ) {
//I dont knwo if i can do this but right now it doesnt matter because of error
console.log(RouterService.getRoutes());
});
我的route-manager.js文件
angular.module('bac.route-manager', [])
.service('RouterService', function() {
this.getRoutes = function() {
return {
"/login": {
templateUrl: 'app/modules/login-manager/partials/login.tpl.html',
requiredLogin: false
},
"/dashboard": {
templateUrl: 'app/modules/dashboard-manager/partials/dashboard.tpl.html',
controller: 'DashboardController',
requiredLogin: true
}
};
};
});
我使用grunt在我的html文件中生成js-include,但为了简洁起见,这里是删除了很多内容后的样子。
我的index.html
<html lang="en" class="no-js" ng-app="bac">
<body>
<ng-view></ng-view>
<script type="text/javascript" src="vendor/angular/angular.js"></script>
<script type="text/javascript" src="app/app.js"></script>
<script type="text/javascript" src="app/modules/dashboard-manager/dashboard-manager.js"></script>
<script type="text/javascript" src="app/modules/route-manager/route-manager.js"></script>
</body>
</html>
在config
阶段,声明的服务还不可用。只有那些已经使用provide
声明的人才能通过serviceNameProvider
(在您定义的名称后添加Provider
)。例如:
.provide('RouterService', function() {
var service = { };
var routes = {
"/login": {
templateUrl: 'app/modules/login-manager/partials/login.tpl.html',
requiredLogin: false
},
"/dashboard": {
templateUrl: 'app/modules/dashboard-manager/partials/dashboard.tpl.html',
controller: 'DashboardController',
requiredLogin: true
}};
service.getRoutes = function() { return routes; };
this.$get = function() { return service; }
this.setupRoute = function(data) { /* something here */ };
};
当您获得提供程序时,this
上定义的所有方法都将可用。当您访问正常服务时,注入的是$get
函数的返回。根据您的需要,您要么需要将服务更改为使用provide
,要么要求以run
方法注入服务:
angular.module('bac', ['bac.route-manager'])
.config(function ($routeProvider, RouterServiceProvider) {
// Here, only RouterServiceProvider.setupRoute will be available
}).run(function (RouterService) {
// Here, the service singleton return with the $get function will
// be injected
console.log(RouterService.getRoutes());
});
编辑
顺便说一句,我相信即使您已经将RouterService
定义为service
,请求RouterServiceProvider
仍然有效,但不会出现任何方法,因为service
本质上是provider
的包装,只返回$get
中的函数
相关文章:
- 为什么我得到错误:$injector:unp未知提供程序
- 在出厂时注入服务错误: [$injector:unpr] 未知提供程序: $scopeProvider <- $scop
- AngularJS错误:$injector:unp未知提供程序-$modalInstanceProvider
- AngularJS:未知的提供程序错误
- Angular小部件中的Angular Grid返回错误:[$injector:unp]未知提供程序:
- 有角度的“;未知提供者”;在约曼应用程序中使用Grunt Build缩小后出错
- 获取解析值的未知提供程序错误
- $provide.decorator为指令提供未知的提供程序
- jQuery - 追加/替换事件侦听器(当事件处理程序未知时)
- angular.js:13294错误:[$injector:unp]未知提供程序:cityResourceProvide
- 角度未知提供程序,无法POST/注册
- 未知提供程序:在angular.bootstrap之前使用$injector获取$location服务时使用$rootE
- Watir Web驱动程序引发未知Javascript错误
- ionic.bundle.js:25642错误:[$injector:unp]未知提供程序:$cordovaGeoloc
- 密钥斗篷未知提供程序错误
- Angular 未知提供程序,出厂时包装在匿名函数中
- ui选择未知提供程序
- 错误: [$injector:unpr] 未知提供程序: setPageProvider <- setPage
- (IONIC)错误: [$injector:unpr] 未知提供程序: 数据服务提供程序 <- 数据服务<- 身份验证控
- AngularJS 未知提供程序