VueJs监听window.resize方法示例


Posted in Javascript onJanuary 17, 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 = () => {
    return (() => {
     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)
    }
   }
  }

最后一步: 去看看你想要的结果吧~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery.addClass始终无效原因分析
Sep 08 Javascript
js中对函数设置默认参数值的3种方法
Oct 23 Javascript
JavaScript添加随滚动条滚动窗体的方法
Feb 23 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 Javascript
分享JavaScript监听全部Ajax请求事件的方法
Aug 28 Javascript
Angular2实现组件交互的方法分析
Dec 19 Javascript
Angular2进阶之如何避免Dom误区
Apr 02 Javascript
JS实现的DOM插入节点操作示例
Apr 04 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
Nov 15 Javascript
生产制造追溯系统之再说条码打印
Jun 03 Javascript
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
Vue router配置与使用分析讲解
Dec 24 Vue.js
详解AngularJS之$window窗口对象
Jan 17 #Javascript
React-native桥接Android原生开发详解
Jan 17 #Javascript
vue自定义指令directive实例详解
Jan 17 #Javascript
移动web开发之touch事件实例详解
Jan 17 #Javascript
详解layui弹窗父子窗口之间传参数的方法
Jan 16 #Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
Jan 16 #Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
Jan 16 #Javascript
You might like
php 缓存函数代码
2008/08/27 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
使用php实现截取指定长度
2013/08/06 PHP
19个Android常用工具类汇总
2014/12/30 PHP
linux中cd命令使用详解
2015/01/08 PHP
微信支付开发发货通知实例
2016/07/12 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
document.documentElement && document.documentElement.scrollTop
2007/12/01 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
python实时分析日志的一个小脚本分享
2017/05/07 Python
Python使用OpenCV进行标定
2018/05/08 Python
Python中函数参数匹配模型详解
2019/06/09 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
Python实现ATM系统
2020/02/17 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
军训的自我鉴定
2013/12/10 职场文书
优秀的计算机专业求职信范文
2013/12/27 职场文书