浅谈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 replace方法与正则表达式
Feb 19 Javascript
javascript 设置某DIV区域内的checkbox复选框
Nov 30 Javascript
js创建对象的几种常用方式小结(推荐)
Oct 24 Javascript
异步javascript的原理和实现技巧介绍
Nov 08 Javascript
js单例模式详解实例
Nov 21 Javascript
JS阻止用户多次提交示例代码
Mar 26 Javascript
js实现网页随机切换背景图片的方法
Nov 01 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
Jul 24 Javascript
详解angularjs利用ui-route异步加载组件
May 21 Javascript
bootstrap confirmation按钮提示组件使用详解
Aug 22 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 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异步执行的常用方式详解
2013/06/03 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
js实现抽奖效果
2017/03/27 Javascript
如何编写jquery插件
2017/03/29 jQuery
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
小程序云开发实战小结
2018/10/25 Javascript
详解vue v-model
2020/08/31 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
python中使用mysql数据库详细介绍
2015/03/27 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
分析Python中解析构建数据知识
2018/01/20 Python
Python给图像添加噪声具体操作
2019/03/03 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
政府信息公开实施方案
2014/05/09 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书