如何使用angularjs触发关闭窗口的函数

vde*_*nne 12 javascript events angularjs

我需要在用户关闭应用程序时执行一个函数,但需要考虑以下几点:

  • 我需要执行一个函数service,然后......
  • ...一个基于纯粹基于JavaScript的功能在这里不太可能有用
  • 当我使用路由时,范围onLocationChangeSuccess绑定也是无用的

因此,此解决方案无法运行:https://stackoverflow.com/a/18355715/773595

因为这会在每次位置更改时触发,但是我需要的是当选项卡/窗口关闭时只有一个触发器.

Mic*_*ael 12

您可以在控制器/指令中注册onbeforeunload,然后您就可以访问该范围.如果是服务,我会在angular.run生命周期中注册它.

angular.module('app', [])
  .controller('exitController', function($scope, $window) {
    $scope.onExit = function() {
      return ('bye bye');
    };

   $window.onbeforeunload =  $scope.onExit;
  });
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="exitController">
  <a href="http://www.disney.com">Leave page</a>
</div>
Run Code Online (Sandbox Code Playgroud)


小智 6

我认为您可以使用$ window来绑定窗口关闭时的本机javascript事件,例如

app.controller('myCtrl', ['$window', '$myService', function ($window, $myService) {
  $window.onbeforeunload = function (evt) {
    $myService.onclose();
  }
}]);
Run Code Online (Sandbox Code Playgroud)