无法访问控制器使用角度ui路由器

问题描述:

即时通讯使用Angular ui路由器在我的应用程序路由,但我想出了一个特殊的问题,因为我不能访问ProfileCtrl。我没有得到任何错误在我的控制台,这使得这更奇怪。我可以访问除ProfileCtrl以外的所有其他控制器。我不知道如何调试这个问题,但它似乎像我的路线无法“读”任何在ProfileCtrl中,就像我删除它仍然没有显示错误的一切。这是我的代码到目前为止。无法访问控制器使用角度ui路由器

angular.module('Chat', ['ngResource', 'ngMessages', 'ui.router', 'ngAnimate', 'ngSanitize', 'satellizer', 'mgcrea.ngStrap', 'angularFileUpload']) 
.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {  
     $stateProvider 
      .state('home', { 
       url: '/', 
       templateUrl: 'views/home.html', 
       controller: 'MainCtrl' 
      }) 
      .state('login', { 
       url: '/login', 
       templateUrl: 'views/login.html', 
       controller: 'LoginCtrl' 
      }) 
      .state('profile', { 
       url: '/profile', 
       templateUrl: 'views/profile.html', 
       controller: 'ProfileCtrl', 
       resolve: { 
        authenticated: function($q, $location, $auth) { 
         var deferred = $q.defer(); 

         if (!$auth.isAuthenticated()) { 
          $location.path('/login'); 
         } else { 
          deferred.resolve(); 
         } 

         return deferred.promise; 
        } 
       } 
      }); 

     $urlRouterProvider.otherwise('/'); 
}]); 

//控制器

angular.module('Chat') 
.controller('ProfileCtrl', ['$scope', function($scope) { 

    console.log("test"); 


}]); 

.state使用resolve选项。根据所述角度UI Wiki

决心是依赖性的可选地图应当注入到控制器。

如果这些依赖关系中的任何一个都是承诺,那么它们将在控制器实例化并触发$ stateChangeSuccess事件之前解析并转换为值。

但是,您的控制器不接受价值authenticated作为依赖项。试着改变你的签名

.controller('ProfileCtrl', ['$scope', 'authenticated' function($scope, authenticated) {

,并验证你的依赖实际上是返回一个值;现在看起来,它看起来并没有什么回报。

+0

嘿克莱斯感谢回答。我已经尝试注入依赖关系,我也检查是返回一个值,但我仍然无法登录。更我删除了解决方案选项,没有任何东西。林仍然想知道为什么不访问控制器,我找不到调试的方式。 – 2015-02-10 23:07:09