Я пытаюсь предупредить клиента о несохраненных изменениях в beforeRouteLeave (to, from, next)
одного из моих компонентов Vue
. Я хочу отобразить следующее приглашение для навигации или перезагрузки:
Я пытаюсь использовать событие window.onbeforeunload
, но не работает правильно:
beforeRouteLeave (to, from, next) {
if (!this.changesSaved) {
const answer = window.onbeforeunload = function(e) {
return 'Do you really want to leave? you have unsaved changes!';
};
if (answer) {
return next()
} else {
return next(false)
}
}
return next()
}
Что я делаю неправильно здесь синтаксически?
Это возможно потому, что windowunload не используется, так как окно никогда не разгружается?? Я действительно не уверен. Но, судя по тому, как работает Vue, я предполагаю, что именно поэтому.
Так что, может быть, просто используйте подтверждение?
beforeRouteLeave (to, from, next) {
if (!this.changesSaved) {
const answer = window.confirm = function(e) {
return 'Do you really want to leave? you have unsaved changes!';
};
if (answer) {
return next()
} else {
return next(false)
}
}
return next()
}
Вероятно, вы используете hook доRouterLeave в дочернем компоненте компонента маршрута. Таким образом, вы должны запускать этот крючок в своем компоненте маршрута напрямую.
Наконец, вы можете напрямую определять охранники маршрутной навигации внутри компонентов маршрута (те, которые передаются конфигурации маршрутизатора) со следующими параметрами...
Вот ссылка