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

时间:2015-03-19 16:29:23

标签: javascript angularjs javascript-events angularjs-scope angular-ui

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

我有这个:

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

当我离开正在使用该控制器的页面但是当我关闭标签/浏览器时它无效时,这工作正常。

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

提前致谢,Laziale

1 个答案:

答案 0 :(得分:7)

来自角度文档:

  

<强> $破坏();

     

从中删除当前范围(及其所有子项)   父范围。删除意味着对$ digest()的调用将不会   更长时间传播到当前范围及其子节点。去除也   意味着当前范围符合垃圾收集的条件。

     

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

     

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

     

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

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

你必须使用低级方法onunload和onbeforeunload事件来处理这种情况,这是你可能会觉得有用的另一篇文章:

javascript detect browser close tab/close browser