我想在不加载当前页面的情况下重定向到另一个页面。
让我解释一下我的任务。我有用户登录条件。
如果用户没有登录并且他试图直接输入URL EX(" localhost / sample.html")意味着它将进入登录页面。对我来说,这种情况很有效。
首先打开sample.html页面,然后只有它会重定向到登录。用户可以在sample.html中查看数据。
var logincheck = function () {
debugger;
$http.get('loggedin').success(function (user) {
alert(user);
// Authenticated
if (user != '0') {
refresh();
return;
}
// Not Authenticated
else {
$window.location.href = '/';
}
});
};
logincheck();
有没有办法在不加载sample.html页面的情况下进入登录页面。
答案 0 :(得分:0)
有趣的方法是在$route event中检查此条件。例如,您可以在app.run
:
$rootScope.$on('$routeChangeStart', function(event, next, current) {
if(next.$$route && userNotAuthenticated) {
$location.href('/');
}
});
优势在于它适用于您的整个应用,您不必为每个页面编写代码。
答案 1 :(得分:0)
在主控制器(附加到索引的控制器)中,您应该进行登录检查并将变量设置为true / false。在您的控制器中检查此变量,如果用户未登录,则执行$ state.go()。
在附加主控制器的索引文件中使用ng-cloak指令,如:
<body ng-controller="mainController" ng-cloak>
您可以阅读ng-cloak here
答案 2 :(得分:0)
这就是你如何做到的。
每当您的角应用程序启动时,它都会运行run
功能。因此,在该函数中附加位置更改侦听器,如下所示
App.run(['$rootScope', '$http', '$urlRouter', function($rootScope, $http, $urlRouter) {
$rootScope.$on('$locationChangeSuccess', function(event) {
event.preventDefault();// prevents the location change
$http({// make a http call to check if user is logged in or not.
url: '/path/to/check/auth',
method: 'post',
data: {}
}).then(function(response){
if(response.data.isUserLoggedIn){//If user is logged in.
$urlRouter.sync();
}else{//user is not logged in
window.location.assign('/login');
}
}, function() {
window.location.assign('/login');
});
});
$urlRouter.listen();
}]);