浅谈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 获取滚动条位置等信息的函数
Sep 08 Javascript
JS格式化数字保留两位小数点示例代码
Oct 15 Javascript
jQuery插件zepto.js简单实现tab切换
Jun 16 Javascript
原生JavaScript实现异步多文件上传
Dec 02 Javascript
JavaScript事件学习小结(三)js事件对象
Jun 09 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
Aug 26 Javascript
JS简单获取当前年月日星期的方法示例
Feb 07 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
JS重学系列之聊聊new操作符
Mar 04 Javascript
jQuery实现高级检索功能
May 28 jQuery
用Vue.js方法创建模板并使用多个模板合成
Jun 28 Javascript
vue指令v-html使用过滤器filters功能实例
Oct 25 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 URL参数获取方式的四种例子
2014/02/28 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
PHP 数组黑名单/白名单实例代码详解
2019/06/04 PHP
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
理清apply(),call()的区别和关系
2011/08/14 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
深入Python解释器理解Python中的字节码
2015/04/01 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
在Python 字典中一键对应多个值的实例
2019/02/03 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
酒店管理专业毕业生推荐信
2013/11/10 职场文书
护士求职自荐信范文
2014/03/19 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
主要领导对照检查材料
2014/08/26 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle