оповещение о несохраненных изменениях в Vue Js

1

Я пытаюсь предупредить клиента о несохраненных изменениях в beforeRouteLeave (to, from, next) одного из моих компонентов Vue. Я хочу отобразить следующее приглашение для навигации или перезагрузки:

Изображение 174551 Изображение 174551

Я пытаюсь использовать событие 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()
  }

Что я делаю неправильно здесь синтаксически?

Теги:
vue.js
events
dom-events
alert

2 ответа

1

Это возможно потому, что 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()
}
  • 1
    это не срабатывает, когда страница перезагружается печально :(
0

Вероятно, вы используете hook доRouterLeave в дочернем компоненте компонента маршрута. Таким образом, вы должны запускать этот крючок в своем компоненте маршрута напрямую.

Наконец, вы можете напрямую определять охранники маршрутной навигации внутри компонентов маршрута (те, которые передаются конфигурации маршрутизатора) со следующими параметрами...

Вот ссылка

Ещё вопросы

Сообщество Overcoder
Наверх
Меню