检测angularjs中的页面卸载

时间:2014-12-08 21:56:28

标签: angularjs global-variables onbeforeunload persist rootscope

我有一个javascript对象,我需要全局到我的angularjs应用程序。当应用程序即将卸载时(由于页面刷新或其他一些情况),我想将该对象持久保存到浏览器存储。我相信将对象添加到$ rootScope将满足使对象成为全局的第一个要求,但是在onbeforeunload事件期间将对象写入存储将需要访问$ rootScope变量。是否可以在angularjs中检测页面卸载事件?

1 个答案:

答案 0 :(得分:12)

这应该这样做,但我也建议避免$rootScope因为不鼓励使用全局状态,并且您也可以将localStorage包装在服务中,以便可以注入并模拟它以进行测试。

.run([
  '$window',
  '$rootScope',
  function($window, $rootScope) {
    $window.addEventListener('beforeunload', function() {
      localStorage.myValue = $rootScope.myValue;
    });
  }
]);