【发布时间】:2018-12-21 18:09:58
【问题描述】:
www.example.com/templates/create-template
如果用户离开create-template 页面,我想警告他们。我的意思是他们是去另一个页面还是去templates。
如果表单变脏,我使用此代码警告用户重新加载页面和路由更改。
function preventPageReload() {
var warningMessage = 'Changes you made may not be saved';
if (ctrl.templateForm.$dirty && !confirm(warningMessage)) {
return false
}
}
$transitions.onStart({}, preventPageReload);
window.onbeforeunload = preventPageReload
如果通过单击菜单或手动更改它来完成页面重新加载和路由更改,它会按预期工作。但是,当我单击后退按钮时,它不会触发警告。只有当我第二次单击后退按钮、重新加载页面或手动更改路线时才会这样做。
我正在使用 ui-router。当您单击back 按钮时,您会从app.templates.create-template 状态转到app.templates 状态。
如果他们按下返回按钮如何警告?
【问题讨论】:
-
您可能想查看为此目的制定的现有指令,例如angular-unsavedChanges,或查看their implementation
-
@AlekseySolovey 我看过那个指令。不幸的是我不能使用它,因为它不仅仅是一种形式。它也是一个 HTML 模板编辑器。此外,他们使用
$rooteScrop来监听$locationChangeStart和$stateChangeStart。我有,但我仍然有同样的问题。
标签: javascript angularjs