浅谈VUE监听窗口变化事件的问题


Posted in Javascript onFebruary 24, 2018

Vuejs 本身就是一个 MVVM 的框架。但是在监听 window 上的 事件 时,往往会显得 力不从心。

比如 这次是 window.resize恩,我做之前也是百度了一下。看到大家伙都为这个问题而发愁。

问题: 今天我也 遇到了这样一个问题, 是关于canvas 自适应。 根据窗口的变化去变化 canvas 的宽度备注: 重要的问题说三遍 解决 框架内的bug 先说 框架 版本 版本 版本 (这里用的 Vue 2.x 、ES6)

解决方案:

第一步: 先在 data 中去 定义 一个记录宽度是 属性

data: { 
 screenWidth: document.body.clientWidth // 这里是给到了一个默认值 (这个很重要)
  }

第二步: 我们需要 讲 reisze 事件在 vue mounted 的时候 去挂载一下它的方法

mounted () { 
    const that = this window.onresize = function() { 
    return function(){ 
      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 
        let that = this 
   setTimeout(function () { 
        // that.screenWidth = that.$store.state.canvasWidth 
  console.log(that.screenWidth) 
        that.init() 
        that.timer = false 
       }, 400) 
      } 
     } 
   }

最后一步: 去看看你想要的结果吧~

以上这篇浅谈VUE监听窗口变化事件的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 全等号运算符使用说明
May 31 Javascript
一些常用的JavaScript函数(json)附详细说明
May 25 Javascript
FireBug 调试JS入门教程 如何调试JS
Dec 23 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
May 29 Javascript
JavaScript计算两个日期时间段内日期的方法
Mar 16 Javascript
JS实现超精简响应鼠标显示二级菜单代码
Sep 12 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
Apr 17 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
Sep 21 Javascript
基于JavaScript实现表格隔行换色
May 08 Javascript
JS轮播图的实现方法
Aug 24 Javascript
微信小程序自定义底部弹出框功能
Nov 18 Javascript
使用watch监听路由变化和watch监听对象的实例
Feb 24 #Javascript
vue watch监听对象及对应值的变化详解
Feb 24 #Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 #Javascript
vue将对象新增的属性添加到检测序列的方法
Feb 24 #Javascript
jQuery实现碰到边缘反弹的动画效果
Feb 24 #jQuery
vue cli webpack中使用sass的方法
Feb 24 #Javascript
vue-cli常用设置总结
Feb 24 #Javascript
You might like
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
仅利用30行Python代码来展示X算法
2015/04/01 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
利用Python破解验证码实例详解
2016/12/08 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
优秀英语专业毕业生求职信
2013/11/23 职场文书
教师辞职报告范文
2014/01/20 职场文书
学习保证书范文
2014/04/30 职场文书
信访维稳工作汇报
2014/10/27 职场文书
小学四年级作文之写景
2019/08/23 职场文书