大家好,我是平均堆栈开发的初学者,我试图在注销后刷新页面。我试过location.reload()
;但它没有工作告诉我在这种情况下页面重新加载的可能代码
$rootScope.$on('$routeChangeStart', function (event) {
var storage = userService.isLoggedIn();
console.log(storage);
if (!storage) {
console.log('DENY');
$rootScope.adminlogin = "adminlogin";
console.log($rootScope.adminlogin);
$location.path('/login');
$route.reload();
// $state.go('/login', null, {reload: true});
}
else {
console.log('ALLOW');
$rootScope.admindashboard = "admindashboard";
var path = $location.path();
console.log(path);
console.log(storage);
if(path == '/login'){
$location.path('/');
}
}
});
答案 0 :(得分:4)
如果要刷新页面,则应使用$window服务中的pdist
。它与浏览器中的重新加载按钮功能相同。
您应该使用$window服务而不是根据window
直接访问原生AngularJS documentation对象的原因:
虽然窗口在JavaScript中是全局可用的,但它会导致 可测性问题,因为它是一个全局变量。在AngularJS中我们 总是通过$ window服务引用它,所以它可能是 被覆盖,删除或嘲笑以进行测试。
如您所说,您正在使用$route
服务,只需致电$route.reload()
,只会重新加载您的控制器,而不是整个应用程序。
答案 1 :(得分:0)
你需要做的就是Vanilia JS的这一小部分:
document.location.href=document.location.href
编辑:为什么这会被低估?
答案 2 :(得分:0)
如果您正在使用路线,那么点击退出时只需将其路由到您的登录页面。
从演示中快照:
这些是我的路线:
$routeProvider
.when('/login', {
controller: 'LoginController',
templateUrl: 'modules/authentication/views/login.html',
hideMenus: true
})
.when('/', {
controller: 'HomeController',
templateUrl: 'modules/home/views/home.html'
})
.otherwise({ redirectTo: '/login' });
当我点击'退出'在我的页面上它应该像:
<p><a href="#/login">Logout</a></a></p>
它应该根据路由重定向到登录页面。