浅谈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 相关文章推荐
JS控制表格隔行变色
Jun 26 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
JavaScript程序开发之JS代码放置的位置
Jan 15 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
Jan 20 Javascript
js前端面试题及答案整理(一)
Aug 26 Javascript
web前端vue之CSS过渡效果示例
Jan 10 Javascript
JavaScript设计模式之工厂模式简单实例教程
Jul 03 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 Javascript
JavaScript如何判断input数据类型
Feb 06 Javascript
vue实现放大镜效果
Sep 17 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
Oct 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 Hash函数,增强密码安全
2011/02/25 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
让FireFox支持innerText的实现代码
2009/12/01 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
javascript将相对路径转绝对路径示例
2014/03/14 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
javascript验证身份证号
2015/03/03 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
Django 反向生成url实例详解
2019/07/30 Python
python计算n的阶乘的方法代码
2019/10/25 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
大学生职业生涯规划书模板
2014/01/03 职场文书
施工安全协议书范本
2014/09/26 职场文书
阿凡达观后感
2015/06/10 职场文书
学习十八大的感悟
2015/08/11 职场文书