浏览器关闭时如何调用Angular方法

时间:2018-08-06 14:27:44

标签: angularjs angularjs-scope session-cookies angularjs-rootscope auth0-lock

我在AngularJS中相对较新,因此我被要求修改我们的应用程序,以便当用户关闭浏览器时,我们也将其注销Auth0服务。

我有下面的代码,但无法启动。请帮助。

$rootScope.$on("$destroy", function() {
    lockService.logout();
});

lockService.logout()拥有在用户单击logout按钮时成功注销用户的功能,包括Auth0 signout函数。

我在某处听说可以使用主控制器的$on.$destroy,但不确定如何执行此操作。上面的代码实际上在mainController函数内部,但是仍然无法正常工作。

这是我找到答案的地方:https://stackoverflow.com/a/36444134/1168597

2 个答案:

答案 0 :(得分:0)

您可以在您的body元素中添加这样的指令。

<body body-unload></body>

app.directive('bodyUnload', [
    function () {
        return {
            restrict: 'A',
            replace: false,
            link: function (scope, element) {
                function cleanupApp(){
                 // do cleanup here
                }
                element[0].onbeforeunload = function() {
                        cleanupApp();
                };
            }
        };
    }
]);

答案 1 :(得分:0)

我找到了一种更清洁,更有效的方法。

$rootScope.$on('$locationChangeStart', function () {

    if (!($window.performance.navigation.type === 1) && lockService.isAuthenticated()) {
        $rootScope.logout();
    }

});

因此,在这里,如果window.performance.navigation.type1,则表示该页面是refresh版。然后,我要做的是如果未刷新并且我的lockService.isAuthenticated()返回true,我logout用户。