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

我正在尝试实现一个以登录表单开头的单页应用程序。对于前端,我使用的是 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

stack overflow close/leave page event with AngularJS
原文答案

答案:

作者头像

我不确定。但也许浏览器在您执行任何逻辑操作之前就关闭了。

尝试这个 :

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

试试这个代码,它会工作

 $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');
        }
    }
 });