我遇到問題。我有一個註冊表表格和許多其他形式。 現在我想檢查表格是否髒,然後如果他們真的想離開/關閉此頁面,我會帶上一個確認框。
首先,當我返回瀏覽器的後退按鈕而不是另一個按鈕([按鈕..]僅爲4個示例)時,確認框顯示兩次,兩次確認後我仍然處於相同的狀態頁面,只是表單被重置。當我按自己的一切工作正常。
其次,當我關閉瀏覽器時,我的確認框出現,然後瀏覽器確認框也顯示出來,但我只想要其中的一個。AngularJS指令用於在離開/關閉之前檢測未決更改頁面
$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(){}),我在config文件中傳遞了這個routeProvider(templateUrl:blabla.html ,控制器:blabalController)
問候,
炭疽
爲什麼不將它添加到根作用域? – lucuma
嗯,我不得不說,我沒有很好的使用rootScope和指令,沒有一個例子..:/ 我想得到像「var form = $('button [type = submit]')這樣的表單。 .closest( 「形式」);」或者其他東西,並添加此參數使其適用於每種形式.. – Anthrax