как вызвать функцию при закрытии окна с помощью angularjs
Мне нужно выполнить функцию, когда пользователь закрывает приложение, но необходимо учитывать следующие моменты:
- мне нужно выполнить функцию одного
service, тогда... - ... функция, основанная на чистом javascript вне области видимости, вряд ли будет
полезно здесь - поскольку я использую маршруты, привязка с областью действия
onLocationChangeSuccessявляется
бесполезно также
Поэтому это решение не будет работать: https://stackoverflow.com/a/18355715/773595
Потому что это будет срабатывать каждый раз при изменении местоположения, но мне нужен только один триггер, когда вкладка/окно закрыты.
3 ответов:
Вы можете зарегистрировать onbeforeunload в вашем контроллере / директиве, тогда у вас будет доступ к области. В случае службы я бы зарегистрировал его в угловом.запустить жизненный цикл.
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>
Я думаю, что вы можете использовать $window для привязки собственного события javascript при закрытии окна например
app.controller('myCtrl', ['$window', '$myService', function ($window, $myService) { $window.onbeforeunload = function (evt) { $myService.onclose(); } }]);
Эта работа?
Onbeforeunload не только срабатывает при закрытии окна, но и происходит, когда пользователь обновляет окно (ctrl+f5). И если вы используете $window.при загрузке функция никогда не будет выполнена, так как окно будет закрыто перед выполнением кода функции.
Comments