使用AngularJS关闭/离开页面事件

时间:2013-10-27 19:10:03

标签: angularjs cookies javascript-events single-page-application

我正在尝试实现以登录表单开头的单页面应用程序。对于前端我正在使用AngularJS。

在登录控制器中,我检查验证数据,如果没问题,我设置一个cookie(使用$ cookieStore服务)和一些用户数据并路由到另一个视图。在这里,在第二个视图的控制器中,我检查cookie中的用户是否为空,如果是,我将重定向到登录视图。

我想要做的是当用户关闭浏览器,或者离开页面时要删除cookie。 我试过用:

$scope.$on("$locationChangeStart", function(){
    $cookieStore.remove('user');
});

$scope.$on("$destroy", function(){
    $cookieStore.remove('user');
});

但它不起作用。 我希望避免用户登录(设置了cookie)并成功重定向到第二个视图的情况,并在此关闭后浏览器/离开页面(cookie仍然存在)。另一个用户写了第二个视图的url,因为带有第一个用户数据的cookie仍在那里,他成功进行了身份验证。

任何人都可以帮我吗?提前谢谢!

plunker link

2 个答案:

答案 0 :(得分:0)

我不确定。但也许浏览器会在你的逻辑中做任何事情之前关闭。

试试这个:

$scope.$on("$locationChangeStart", function(event){
    event.preventDefault()
    $cookieStore.remove('user');
});

答案 1 :(得分:0)

试试这段代码,它会起作用

 $scope.$on('$locationChangeStart',function(event) {
    if($scope.formsubmitted && $scope.myForm.$dirty){   
        var answer = confirm("Are you sure you want to leave this page?")
            if (!answer) {
            event.preventDefault();
        }else{
          $cookieStore.remove('user');
        }
    }
 });