浅谈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 相关文章推荐
用cookies实现的可记忆的样式切换效果代码下载
Dec 24 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
Firefox和IE兼容性问题及解决方法总结
Oct 08 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
Aug 24 Javascript
Vue动态修改网页标题的方法及遇到问题
Jun 09 Javascript
微信小程序接入腾讯云验证码的方法步骤
Jan 07 Javascript
node.js使用yargs处理命令行参数操作示例
Feb 11 Javascript
ant-design-vue按需加载的坑的解决
May 14 Javascript
vue-cli3 热更新配置操作
Sep 18 Javascript
一文帮你理解PReact10.5.13源码
Apr 03 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
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
一个PHP针对数字的加密解密类
2014/03/20 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
js的window.showModalDialog及window.open用法实例分析
2015/01/29 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
python列表操作使用示例分享
2014/02/21 Python
讲解Python中fileno()方法的使用
2015/05/24 Python
Python中特殊函数集锦
2015/07/27 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
python中str内置函数用法总结
2020/12/27 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
一个C/C++编程面试题
2013/11/10 面试题
如何理解transaction事务的概念
2015/05/27 面试题
好的演讲稿开场白
2013/12/30 职场文书
雨花台导游词
2015/02/06 职场文书
三八妇女节寄语
2015/02/27 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python