AngularFire 0.9使用UI路由器解析

时间:2014-11-19 18:07:50

标签: javascript angularjs firebase angularfire angular-ui-router

我已经按照教程here进行了操作,但却出现了这个错误

   Unknown provider: currentAuthProvider <- currentAuth

我将currentAuth添加到我的所有控制器中,可能出错了什么?

 Firebase 2.0.4 
 AngularFire 0.9.0

这里是路线档案:

      .config(function($stateProvider, $urlRouterProvider, $locationProvider) {

     $urlRouterProvider.otherwise('/');

     $stateProvider

         .state('home', {
         url: '/',
         templateUrl: 'views/home.html',
         controller: "homeCtrl",
         resolve: {
             "currentAuth": ["userFactory", function(userFactory) {
                 return userFactory.$waitForAuth();
             }]
         }
     })

我只有两个模块:

      var warp = angular.module('warp', [
     'firebase',
     'ui.router'
 ])

这是控制器之一:

     angular.module('warp')
    .controller("signupCtrl", ["$rootScope", '$scope', 'userFactory', '$window', '$firebase', '$location', 'USERS', 'currentAuth',
        function($rootScope, $scope, userFactory, $window, $firebase, $location, USERS, currentAuth) {

2 个答案:

答案 0 :(得分:3)

检查您的HTML部分视图并删除 ng-controller 声明。

NgRoute为您实例化控制器并将其绑定到视图中定义的DOM,因此无需在视图的部分HTML中使用 ng-controller 指定控制器。

这有效:

<!-- in it's own HTML file, say  views/signupCtrl.html -->
<div>  <!-- Look, no need for ng-controller="signupCtrl"... -->
  ...signup Form etc...
</div>

如果执行在那里留下ng-controller定义会发生什么(我怀疑你做的是),angular会尝试将控制器实例化两次:

  • 一旦加载DOM时遇到它,那么 currentAuth 就不会被定义,所以如果它&#你会得到 unknow provider 错误39; s在控制器中列为依赖项。
  • 一旦解决完成。

答案 1 :(得分:-1)

你需要注入&#39; currentAuth&#39;仅对您处理登录的Controller对象。 当我从所有其他控制器中删除它时,为我工作。