У меня есть простое угловое приложение с двумя представлениями, загружаемыми с помощью ngRoute. Мне нужно сделать некоторую очистку на сервере, когда пользователь перемещается между представлениями и когда пользователь покидает страницу (обновляет окно, закрывает вкладку или закрывает браузер).
Моя первая остановка была здесь: Показ предупреждения в angularjs, когда пользователь покидает страница. Это решило первый случай, когда пользователь перемещается между представлениями. Я справился с очисткой следующим образом:
$scope.$on('$locationChangeStart', function (event) {
var answer = confirm("Are you sure you want to leave this page?")
if (answer) {
api.unlock($scope.id); //api is a service that I wrote. It uses angular $http service to handle communications and works in all other cases.
} else {
event.preventDefault();
}
});
Однако мне не удалось обработать случай, когда пользователь покидает страницу. Следуя приведенному выше ответу и этому сообщению в группах Google: https://groups.google.com/forum/#!topic/angular/-PfujIEdeCY Я пробовал это:
window.onbeforeunload = function (event) {
api.unlock($scope.id); //I don't necessarily need a confirmation dialogue, although that would be helpful.
};
Но это не сработало. Затем я прочитал здесь: Как выполнить функцию ajax onbeforeunload? что запрос должен быть синхронным. a> что Angular не поддерживает это (хотя это может быть устаревшим).
Я также пытался вызвать $http напрямую (без службы), но это тоже не сработало. На данный момент я застрял. Любые предложения / выводы будут действительно оценены.
Заранее спасибо!