在onBeforeUnload提示符后,AngularJS取消绑定,$ destroy不会触发

时间:2017-04-13 15:10:36

标签: javascript angularjs memory-leaks event-listener onbeforeunload

我需要在我们的预订页面离开时显示提示。在应用程序中导航时,没有问题。一个简单的$ onLocationChange可以在自定义提示下正常工作。但是,当导航到谷歌或我们的注销页面(在一个单独的角应用程序中)时,$ onLocationChange不起作用。在这种情况下,我使用了:

 window.onbeforeunload = onUnloadAppStart;

function onUnloadAppStart() {
        var message = figureOutWhichMessageToUse();
        return message;
}

这样我至少可以自定义导航消息,即使我无法更改提示框本身。但是这会导致内存泄漏。所以当我离开时我需要设置为null。像这样:

$scope.$on("$destroy", function() {
    window.onbeforeunload = null;
    }

然而,当我在app中导航时,这个($ destroy事件)似乎只会触发,就像$ onLocationChange一样。此外,我需要在提示后清除绑定,这是在onUnloadAppStart函数之后。这是因为如果我删除绑定并且用户说“不,留在这个页面上”,那么现在我的“onbeforeunload”被搞砸了。有没有办法在onbeforeunload提示符后触发函数?

0 个答案:

没有答案