我有个问题。我有一个注册表单和许多其他表格。现在我想检查表单是否脏了,如果他们真的想离开/关闭这个页面,我会带一个确认框。
首先,当我使用浏览器的后退按钮而不是其他按钮([button..] 仅 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,控制器: blabal控制器)
问候,
炭疽病