无法访问控制器使用角度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) {
,并验证你的依赖实际上是返回一个值;现在看起来,它看起来并没有什么回报。
嘿克莱斯感谢回答。我已经尝试注入依赖关系,我也检查是返回一个值,但我仍然无法登录。更我删除了解决方案选项,没有任何东西。林仍然想知道为什么不访问控制器,我找不到调试的方式。 – 2015-02-10 23:07:09