关闭标签页/浏览器时触发Angularjs事件

问题描述 投票:8回答:1

我想在Angularjs控制器中触发JS代码。

我有这个:

$scope.$on('$destroy', function () {
            alert('page1');
        });

[当我离开使用该控制器的页面时,这很好用,但是当我关闭选项卡/浏览器时,它不起作用。

当标签页/浏览器关闭时,我是否需要使用其他代码来触发JS代码?

javascript angularjs angularjs-scope dom-events angular-ui
1个回答
7
投票

$ destroy();

从以下位置删除当前范围(及其所有子级)父范围。删除意味着对$ digest()的调用不会再传播到当前范围及其子级。也删除表示当前范围可以进行垃圾回收。

$ destroy()通常由ngRepeat等指令用于管理循环的展开。

仅在销毁示波器之前,会在上广播$ destroy事件这个范围。应用程序代码可以注册$ destroy事件处理程序这将使它有机会执行任何必要的清理。

[请注意,在AngularJS中,还有一个$ destroy jQuery事件,该事件可用于在从中删除元素之前清理DOM绑定DOM。

这只是处理范围本身被破坏的情况,尽管在关闭选项卡/浏览器时似乎没有发生。

您将必须使用较低级别的onunload和onbeforeunload事件来处理这种情况,这是您可能会发现有用的另一篇文章:

javascript detect browser close tab/close browser

© www.soinside.com 2019 - 2024. All rights reserved.