8

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

4

1 回答 1

13

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

.run([
  '$window',
  '$rootScope',
  function($window, $rootScope) {
    $window.addEventListener('beforeunload', function() {
      localStorage.myValue = $rootScope.myValue;
    });
  }
]);
于 2014-12-08T22:07:11.023 回答