一、目的:
要在监听滚动函数里(window.addEventListener)获取到主题高度值(themeTopYs),方便主题高度与滚动高度(positionY)进行比较。
二、问题:
在window.addEventListener里无法获取主题高度(themeTopYs)的值;
在其他地方created,mounted,或者其它methods无法获取到滚动高度(positionY)的值;
代码如下:
data(){
return{
themeTopYs:[123],//主题的高度
positionY:null,//滚动的高度
}
},
mounted(){
//获取滚动高度
window.addEventListener("scroll", function(){
this.positionY = window.pageYOffset;
console.log(this.positionY);//有值
console.log(this.themeTopYs);//undefined
})
},
三、解决方法:
在监听滚动函数(window.addEventListener)中不使用匿名函数,而是调用普通函数(handleScroll),这样的回调函数就可以获取到其他函数的值(比如主题高度的值themeTopYs)。
代码如下:
data(){
return{
themeTopYs:[123],//主题的高度
positionY:null,//滚动的高度
}
},
mounted(){
//监听滚动
window.addEventListener("scroll", this.handleScroll);
},
methods:{
//滚动的回调函数
handleScroll(){
this.positionY = window.pageYOffset;
console.log(this.positionY);//有值
console.log(this.themeTopYs);//有值
},
}