Это, вероятно, потому что 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()
}