我希望在Angularjs控制器中运行JS代码。
我有这个:
$scope.$on('$destroy', function () {
alert('page1');
});
当我从使用该控制器的页面导航时,它能够正常工作,但当我关闭选项卡/浏览器时,它就无法工作了。
我需要使用其他代码在选项卡/浏览器关闭时触发JS代码吗?
我希望在Angularjs控制器中运行JS代码。
我有这个:
$scope.$on('$destroy', function () {
alert('page1');
});
当我从使用该控制器的页面导航时,它能够正常工作,但当我关闭选项卡/浏览器时,它就无法工作了。
我需要使用其他代码在选项卡/浏览器关闭时触发JS代码吗?
来自Angular文档:
$destroy();
从父级作用域中移除当前作用域(和它的所有子作用域)。移除意味着对 $digest() 函数的调用将不会再传递到当前作用域或其子作用域。此外,移除还意味着当前作用域可以进行垃圾回收。
$destroy() 通常由指令(例如ngRepeat)用于管理循环的展开。
在作用域销毁之前,该作用域上会广播一个 $destroy 事件。应用程序代码可以注册 $destroy 事件处理程序,以便有机会执行任何必要的清理工作。
请注意,在AngularJS中,也有一个 $destroy jQuery 事件,它可以用于在元素从DOM中删除之前清除DOM绑定。
这仅处理作用域本身被销毁的情况,但当选项卡/浏览器关闭时,似乎并不会发生这种情况。
您需要使用 onunload 和 onbeforeunload 事件的低级方法来处理此情况,以下是另一篇您可能会发现有用的文章: