我在Yeoman AngularFire应用程序中将服务注入控制器时遇到了一些麻烦。
这是我试图将user
注入的控制器(由Yeoman生成器包含):
angular.module('myYoApp')
.controller('ChatCtrl', function ($scope, user, Ref, $firebaseArray, $timeout) { ....
产生此Unknown provider
错误:
angular.js:12798 Error: [$injector:unpr] Unknown provider: userProvider <- user <- ChatCtrl
奇怪的是,它在我的自定义控制器中工作正常,允许在相关视图中访问用户。
angular.module('myYoApp')
.controller('myCtrl', function ($scope, user, Auth, Ref, $firebaseArray, $firebaseObject, $timeout) { ....
我不知道为什么user
服务可以在我的自定义控制器中注入,而不是在Yeoman生成的ChatCtrl
中注入。我也查看了整个项目,似乎无法找到user
服务的来源。但是,如果我的自定义服务可以使用它,它显然位于应用程序的某个位置。
我也尝试使用$user
代替user
,但这并没有解决它。
欢呼任何帮助搞清楚这一点!
答案 0 :(得分:0)
好的。我设法解决了这个问题。这是routes.js
的疏忽。 Yeoman angularfire-generator添加了内置路由安全/身份验证,该路由添加到路由中,以便在用户登录时轻松阻止其被访问。
因此,如果路由使用user
代替$routeProvider.whenAuthenticated
,则$routeProvider.when
服务只能注入控制器。
常规不安全路线如下所示:
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
安全路线如下所示:
$routeProvider
.whenAuthenticated('/chat', {
templateUrl: 'views/chat.html',
controller: 'ChatCtrl'
})