Jason Wood:
I am adding an event listener in an onFormLoad
:
window.addEventListener('scroll', function() {
model.ui.headerScrolled = window.scrollY > 85
});
How would I clear this when the user navigates away from that page? Looking for something like onFormUnload
…
Rishad Alam:
Hi Jason, I can take a look at this.
Rishad Alam:
vueapp.$router.beforeEach((to, from, next) => {
if (from.path === '/elements') { //path of the page exiting from
//function when leaving page
}
});
Rishad Alam:
replace ‘/elements’ to the path of the your page. add a function to remove the event listener - window.removeEventListener(‘scroll’, handleScroll); handleScroll can contain the function that is to be used and removed
Rishad Alam:
This would go on to your onformload function
Jason Wood:
What should handleScroll
be replaced with?
Jason Wood:
Here’s what I have right now but handleScroll is undefined.
window.addEventListener('scroll', function() {
model.ui.headerScrolled = window.scrollY > 85
});
vueapp.$router.beforeEach((to, from, next) => {
if (from.path === '/apply') {
window.removeEventListener('scroll',handleScroll);
}
});
Rishad Alam:
function() {
model.ui.headerScrolled = window.scrollY > 85
} should be handle scroll
Jason Wood:
Here is the final solution. Moved the event listener function into its own separate function so it could be referenced in both addEventListener()
and removeEventListener
, and also add next()
at the end:
function headerScroll() {
model.ui.headerScrolled = window.scrollY > 85
}
window.addEventListener('scroll', headerScroll);
vueapp.$router.beforeEach((to, from, next) => {
if (from.path === '/apply') { //path of the page exiting from
//function when leaving page
window.removeEventListener('scroll', headerScroll);
}
next();
});