选项卡/浏览器关闭时触发angularjs事件

Laz*_*ale 8 javascript javascript-events angularjs angular-ui angularjs-scope

我想在angularjs控制器中激活js代码.

我有这个:

$scope.$on('$destroy', function () {
            alert('page1');
        });
Run Code Online (Sandbox Code Playgroud)

当我正在使用该控制器的页面导航时,这工作正常,但是当我关闭标签/浏览器时,它无法正常工作.

当标签/浏览器关闭时,我是否需要使用其他一些代码来激活js代码?

提前谢谢,Laziale

Mar*_*ark 7

从角度文档:

$ destroy()方法;

从父作用域中删除当前作用域(及其所有子作用域).删除意味着对$ digest()的调用将不再传播到当前范围及其子节点.删除还意味着当前范围符合垃圾收集的条件.

$ destroy()通常由诸如ngRepeat之类的指令用于管理循环的展开.

在范围被销毁之前,在此范围内广播$ destroy事件.应用程序代码可以注册$ destroy事件处理程序,使其有机会执行任何必要的清理.

请注意,在AngularJS中,还有一个$ destroy jQuery事件,可以在从DOM中删除元素之前清除DOM绑定.

这只是处理范围本身被破坏的情况,但是当标签/浏览器关闭时似乎不会发生.

你将不得不使用低级方法onunload和onbeforeunload事件来处理这种情况,这是另一个你可能会觉得有用的帖子:

javascript检测浏览器关闭选项卡/关闭浏览器