Je dois exécuter une fonction lorsque l'utilisateur ferme l'application, mais les points suivants doivent être pris en considération:
service
, puis … onLocationChangeSuccess
est également inutile Par conséquent, cette solution ne fonctionnera pas: https://stackoverflow.com/a/18355715/773595
Parce que cela sera déclenché chaque fois que l'emplacement change, mais ce dont j'ai besoin n'est qu'un déclencheur lorsque l'onglet / fenêtre est fermé.
Vous pouvez enregistrer une surcharge sur votre contrôleur / directive, puis vous aurez accès à la portée. Dans le cas d'un service, je l'enregistrais dans le cycle de vie angular.run.
angular.module('app', []) .controller('exitController', function($scope, $window) { $scope.onExit = function() { return ('bye bye'); }; $window.onbeforeunload = $scope.onExit; });
<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>
Je pense que vous pouvez utiliser $ window pour lier l'événement javascript natif sur la fenêtre close eg
app.controller('myCtrl', ['$window', '$myService', function ($window, $myService) { $window.onbeforeunload = function (evt) { $myService.onclose(); } }]);
Ce travail?
Onforeunload, non seulement déclenche lorsque la fenêtre se ferme, mais aussi lorsque l'utilisateur actualise la fenêtre (ctrl + f5). Et si vous utilisez $ window.onunload, la fonction ne sera jamais exécutée car la fenêtre sera fermée avant d'exécuter le code de la fonction.