我有一个简单的Angular应用程序,使用ngRoute加载两个视图。当用户在视图之间导航或离开页面(刷新窗口、关闭选项卡或关闭浏览器)时,我需要在服务器上进行一些清理操作。
我的第一站是这里:在用户离开页面时显示AngularJS警报。它解决了用户在视图之间导航的情况。我已经像这样处理了清理操作:
然而,我还无法处理用户离开页面的情况。根据上面的答案以及这篇谷歌小组帖子:https://groups.google.com/forum/#!topic/angular/-PfujIEdeCY,我尝试了以下方法:
但是它没有起作用。然后我在这里阅读到:如何在beforeunload上执行ajax函数?,请求需要同步,在这里:如何使用AngularJS进行$http同步调用中提到Angular不支持这个(尽管这可能已经过时了)。
我还尝试直接调用$http(而不是服务),但那也不起作用。现在我被卡住了。任何建议/线索都将不胜感激。
提前致谢!
我的第一站是这里:在用户离开页面时显示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();
}
});
然而,我还无法处理用户离开页面的情况。根据上面的答案以及这篇谷歌小组帖子: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.
};
但是它没有起作用。然后我在这里阅读到:如何在beforeunload上执行ajax函数?,请求需要同步,在这里:如何使用AngularJS进行$http同步调用中提到Angular不支持这个(尽管这可能已经过时了)。
我还尝试直接调用$http(而不是服务),但那也不起作用。现在我被卡住了。任何建议/线索都将不胜感激。
提前致谢!