【发布时间】:2015-04-23 00:46:30
【问题描述】:
我现在有一个角度应用程序,我希望在用户登录时记录用户,直到他注销/关闭浏览器或导航到另一个站点。
如果用户按下注销按钮,这相当容易,但是当用户关闭浏览器或导航到另一个站点时,就会出现问题。
我的问题是,当用户关闭浏览器/选项卡和/或更改网页时,我如何以角度检测并触发事件?
【问题讨论】:
标签: javascript angularjs
我现在有一个角度应用程序,我希望在用户登录时记录用户,直到他注销/关闭浏览器或导航到另一个站点。
如果用户按下注销按钮,这相当容易,但是当用户关闭浏览器或导航到另一个站点时,就会出现问题。
我的问题是,当用户关闭浏览器/选项卡和/或更改网页时,我如何以角度检测并触发事件?
【问题讨论】:
标签: javascript angularjs
来自角度文档:https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$destroy
$destroy();
从父作用域中移除当前作用域(及其所有子作用域)。移除意味着对 $digest() 的调用将不再传播到当前作用域及其子作用域。删除还意味着当前范围有资格进行垃圾收集。 $destroy() 通常由诸如 ngRepeat 之类的指令用于管理循环的展开。 就在作用域被销毁之前,会在该作用域上广播一个 $destroy 事件。应用程序代码可以注册一个 $destroy 事件处理程序,这将使它有机会执行任何必要的清理。 请注意,在 AngularJS 中,还有一个 $destroy jQuery 事件,可用于在从 DOM 中删除元素之前清理 DOM 绑定。
【讨论】:
当有人离开该页面时会调用 onunload 事件
angular.element(document.getElementById('myDiv')).scope();
scope.my_function();
更多示例
<div id="myDiv">
<!-- some code here -->
</div>
<script>
....
angular.controller('MyController', ['$scope', function($scope) {
$scope.my_function = function() {
// Do something
};
}]); // End of controller
angular.element(document.getElementById('myDiv')).scope();
scope.my_function();
</script>
【讨论】: