浅谈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 相关文章推荐
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
May 30 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
JS控件的生命周期介绍
Oct 22 Javascript
javascript生成json数据简单示例分享
Feb 14 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
Aug 24 Javascript
Jquery常用的方法汇总
Sep 01 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
Mar 18 Javascript
通过npm或yarn自动生成vue组件的方法示例
Feb 12 Javascript
vue+layui实现select动态加载后台数据的例子
Sep 20 Javascript
Postman参数化实现过程及原理解析
Aug 13 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 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关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
如何在Python中编写并发程序
2016/02/27 Python
Python面向对象编程中关于类和方法的学习笔记
2016/06/30 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
python如何实现反向迭代
2018/03/20 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python3中property使用方法详解
2019/04/23 Python
Python绘制热力图示例
2019/09/27 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
高二学生评语大全
2014/04/25 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书
详解Redis复制原理
2021/06/04 Redis