AngularJS - 重定向到另一个页面

时间:2014-08-04 17:32:21

标签: angularjs redirect

我学习了AngularJS,我在重定向页面方面遇到了问题。

用例:

  • 我有一个index.html主页但是如果用户没有登录,那么它应该重定向到login.html页面(每个页面也只能由登录用户访问)

在主app.js我有一个提供者和跑步者:

var app = angular.module("app", ["ngRoute", "ngAnimate", "ngResource"]);

app.config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) {

$routeProvider
        .when("/", {
            template: "index.html"
        })
        .when("/other", {
            templateUrl: "other.html"
        });
}]);


app.run(["$rootScope", "LoginService", function($rootScope, LoginService, $window) {
    LoginService.checkSession().then(function(response) {
        $rootScope.isLoggedIn = response;
            if ($rootScope.isLoggedIn === false) {
                console.log('DENY');
                $window.location.href = '/login';
            }
    }, function(reject) {
        $rootScope.isLoggedIn = reject;
    });
}]);
问题: 如果我没有登录该行" $ window.location.href =' / login'"这是控制台中的错误:

DENY 
TypeError: Cannot read property 'location' of undefined
    at LoginService.checkSession.then.$rootScope.isLoggedIn 

当我在行之前设置调试器时,它会打印:

$window
undefined

我不知道为什么会这样。有人可以帮我解决这个问题吗?

最好的问候, 路加

2 个答案:

答案 0 :(得分:0)

您忘记将$window作为字符串注入"注入数组":

["$rootScope", "LoginService","$window", function($rootScope, LoginService, $window)

答案 1 :(得分:0)

当你定义app.run时,你没有在$ window中传入依赖注入。

   app.run(["$rootScope", "LoginService", function($rootScope, LoginService, $window)

尝试用此

替换上述行
app.run(["$rootScope", "LoginService","$window", function($rootScope, LoginService, $window)