2014-06-22 78 views
2

我收到Angularjs未知的提供程序错误

Error: [$injector:unpr] Unknown provider: mvProfileCtrlProvider <- mvProfileCtrl 
在我的错误

,我已经确信,它包含在我的脚本,并访问(我可以从chrome-debugger > sources > mvProfileCtrl.js打开它),所以它是可用于参考我猜。但还是这里有两个相关的文件:

angular.module('app').controller('navBarLoginController',function($scope,$http,mvIdentity,mvNotifier,mvAuth,mvProfileCtrl,$location) { 
    $scope.identity = mvIdentity; 
    $scope.signin = function(username,password) { 
     mvAuth.authenticateUser(username,password).then(function(success){ 
      if(success){ 
       mvNotifier.notify('You have successfully signed in!'); 
      }else{ 
       mvNotifier.notify('Username/Password combination incorrect'); 
      } 
     }) 
    } 
    var profile = mvProfileCtrl; 
    $scope.update = function(){ 
     profile.listen(mvIdentity.currentUser); 
    } 
    $scope.signout = function() { 
     mvAuth.logoutUser().then(function() { 
      $scope.username = ""; 
      $scope.password = ""; 
      mvNotifier.notify('You have successfully signed out!'); 
      $location.path('/'); 
     }) 
    } 
}) 

和 -

angular.module('app').controller('mvProfileCtrl', function($scope, mvAuth, mvIdentity, mvNotifier) { 
    $scope.mvIdentity = mvIdentity; 
    $scope.update = function() { 
     console.log("" + $scope.updateemail + " -- " + test); 
     var newUserData = { 
      username: $scope.updateemail, 
      firstName: $scope.updatefname, 
      lastName: $scope.updatelname 
     } 
     if($scope.updatepassword && $scope.updatepassword.length > 0) { 
      newUserData.password = $scope.updatepassword; 
     } 

     mvAuth.updateCurrentUser(newUserData).then(function() { 
      $('#profileModal').modal('toggle'); 
      mvNotifier.notify('Your user account has been updated'); 
     }, function(reason) { 
      mvNotifier.error(reason); 
     }) 
    } 
    return { 
     listen : function(currentUser) { 
      if (!currentUser) return; 
      $scope.updateemail = currentUser.username; 
      $scope.updatefname = currentUser.firstName; 
      $scope.updatelname = currentUser.lastName; 
      console.log("--> " + $scope.updateemail + " -- " + test); 
     } 
    } 
}); 

和脚本文件 - 在这里

script(type="text/javascript", src="/vendor/jquery/dist/jquery.js") 
script(type="text/javascript", src="/vendor/toastr/toastr.js") 
script(type="text/javascript", src="/vendor/angular/angular.js") 
script(type="text/javascript", src="/vendor/angular-resource/angular-resource.js") 
script(type="text/javascript", src="/vendor/angular-route/angular-route.js") 
script(type="text/javascript", src="/vendor/bootstrap/dist/js/bootstrap.js") 
script(type="text/javascript", src="/vendor/bootstrap/js/dropdown.js") 
script(type="text/javascript", src="/app/app.js") 
script(type="text/javascript", src="/plugins/backstretch/jquery.backstretch.min.js") 
script(type="text/javascript", src="/plugins/bxslider/jquery.bxslider.min.js") 
script(type="text/javascript", src="/plugins/bxslider/jquery.bxslider.min.js") 
script(type="text/javascript", src="/app/account/navBarLoginController.js") 
script(type="text/javascript", src="/app/common/mvNotifier.js") 
script(type="text/javascript", src="/app/account/mvIdentity.js") 
script(type="text/javascript", src="/app/account/mvauth.js") 
script(type="text/javascript", src="/app/account/mvUser.js") 
script(type="text/javascript", src="/app/admin/mvUserListCtrl.js") 
script(type="text/javascript", src="/app/account/mvSignupCtrl.js") 
script(type="text/javascript", src="/app/account/mvProfileCtrl.js") 

回答

2

的问题是,您试图注入控制器进入另一控制器。这是而不是它应该如何。

请检查:

要看到,我们应该怎么控制器之间通信 - 使用共享服务。

服务和控制器之间最大的区别是(见Developer Guide /Dependency Injection):

控制器的特别之处在于,不像服务,可以有他们的许多实例中的应用。例如,模板中的每个ng-controller指令都会有一个实例。

所以,当我们试图调用另一个内部的一个控制器的方法......我们应该把它移动到一个单独服务

相关问题