浅谈VUE监听窗口变化事件的问题
Vuejs本身就是一个MVVM的框架。但是在监听window上的事件时,往往会显得力不从心。
比如这次是window.resize恩,我做之前也是百度了一下。看到大家伙都为这个问题而发愁。
问题:今天我也遇到了这样一个问题,是关于canvas自适应。根据窗口的变化去变化canvas的宽度备注:重要的问题说三遍解决框架内的bug先说框架版本版本版本(这里用的Vue2.x、ES6)
解决方案:
第一步:先在data中去定义一个记录宽度是属性
data:{
screenWidth:document.body.clientWidth//这里是给到了一个默认值(这个很重要)
}
第二步:我们需要讲reisze事件在vuemounted的时候去挂载一下它的方法
mounted(){
constthat=thiswindow.onresize=function(){
returnfunction(){
window.screenWidth=document.body.clientWidth;
that.screenWidth=window.screenWidth
})()
}
}
第三步:watch去监听这个属性值的变化,如果发生变化则讲这个val传递给this.screenWidth
watch:{
screenWidth(val){
this.screenWidth=val
}
}
第四步:优化因为频繁触发resize函数,导致页面很卡的问题
watch:{
screenWidth(val){
if(!this.timer){
this.screenWidth=val
this.timer=true
letthat=this
setTimeout(function(){
//that.screenWidth=that.$store.state.canvasWidth
console.log(that.screenWidth)
that.init()
that.timer=false
},400)
}
}
}
最后一步:去看看你想要的结果吧~
以上这篇浅谈VUE监听窗口变化事件的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。