我学习了AngularJS,我在重定向页面方面遇到了问题。
用例:
在主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
我不知道为什么会这样。有人可以帮我解决这个问题吗?
最好的问候, 路加
答案 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)