我想在angularjs控制器中激活js代码。
我有这个:
$scope.$on('$destroy', function () {
alert('page1');
});
当我离开正在使用该控制器的页面但是当我关闭标签/浏览器时它无效时,这工作正常。
当标签/浏览器关闭时,是否需要使用其他一些代码来激活js代码?
提前致谢,Laziale
答案 0 :(得分:7)
来自角度文档:
<强> $破坏(); 强>
从中删除当前范围(及其所有子项) 父范围。删除意味着对$ digest()的调用将不会 更长时间传播到当前范围及其子节点。去除也 意味着当前范围符合垃圾收集的条件。
$ destroy()通常由诸如ngRepeat for之类的指令使用 管理循环的展开。
在范围被销毁之前,广播一个$ destroy事件 这个范围。应用程序代码可以注册$ destroy事件处理程序 这将使它有机会进行任何必要的清理。
请注意,在AngularJS中,还有一个$ destroy jQuery事件 可以在删除元素之前用于清理DOM绑定 DOM。
这只是处理范围本身被破坏的情况,但是当标签/浏览器关闭时似乎不会发生。
你必须使用低级方法onunload和onbeforeunload事件来处理这种情况,这是你可能会觉得有用的另一篇文章: