浅谈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代码必备[js多浏览器兼容写法]
Oct 29 Javascript
JS 控制非法字符的输入代码
Dec 04 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
Aug 09 Javascript
js实现倒计时(距离结束还有)示例代码
Jul 24 Javascript
自己实现ajax封装示例分享
Apr 01 Javascript
jquery模拟实现鼠标指针停止运动事件
Jan 12 Javascript
详解js中的apply与call的用法
Jul 30 Javascript
JavaScript学习笔记整理_关于表达式和语句
Sep 19 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 Javascript
JavaScript编写棋盘覆盖代码详解
Aug 28 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
四十九个javascript小知识实用技巧
Nov 20 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php数组随机排序实现方法
2015/06/13 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
给js文件传参数(详解)
2014/07/13 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
JSON生成Form表单的方法示例
2018/11/21 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
python模块之re正则表达式详解
2017/02/03 Python
Python切片工具pillow用法示例
2018/03/30 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
python实现俄罗斯方块游戏
2020/03/25 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
详解Python IO口多路复用
2020/06/17 Python
Weblogc domain问题
2014/01/27 面试题
实习医生自我评价
2013/09/22 职场文书
青年志愿者先进事迹
2014/05/06 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书