У меня проблема. У меня есть регистрационная форма и много других форм. Теперь я хочу проверить, не загрязнена ли форма, а затем я приношу окно подтверждения, если они действительно хотят покинуть/закрыть эту страницу.
Прежде всего, когда я возвращаюсь с помощью кнопки «Назад» браузера, а не с помощью другой кнопка ([кнопка..] всего 4 примера) окно подтверждения появляется два раза, и после двух подтверждений я все еще на той же странице, просто форма сбрасывается. Когда я нажимаю свою, все работает нормально.
Во-вторых, когда я закрываю браузер, появляется мое окно подтверждения, а затем также появляется окно подтверждения браузера, но мне нужен только один из них.
$scope.$on('$locationChangeStart', function (event, next, current) {
if ($scope.requestForm.$dirty) {
if (!$window.confirm('Unsaved Changes, leave Page?')) {
//cancel leaving view2
//works when clicking links, but doesn't work when using the back button
event.preventDefault();
}
} else {
}
});
$scope.$watch("requestForm.$dirty", function (newval) {
window.myGlobalDirtyFlag = newval;
});
window.onbeforeunload = function (e) {
if (window.myGlobalDirtyFlag === true) {
if (!$window.confirm('Unsaved Changes, close Page?')) {
//cancel leaving view2
//works when clicking links, but doesn't work when using the back button
return false;
} else {
}
}
};
$scope.$on("$destroy", function () {
window.myGlobalDirtyFlag = false;
});
Может у кого-то также есть идея, как я могу внести это в директиву AngularJS, чтобы мне не приходилось копировать этот код для каждого сайта, на котором у меня есть форма. (Каждая страница имеет только 1 форму, но имя каждой формы отличается!)
Мои контроллеры находятся в отдельных файлах javascript (функция blablaController() {}), и я передаю это для каждого routeProvider в моем файле конфигурации (templateUrl: blabla .html, контроллер: blabalController)
С уважением,
Антракс