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 相关文章推荐
JS按回车键实现登录的方法
Aug 25 Javascript
jQuery中用dom操作替代正则表达式
Dec 29 Javascript
Flash图片上传组件 swfupload使用指南
Mar 14 Javascript
javascript RegExp 使用说明
May 21 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
Aug 25 Javascript
微信小程序开发之Tabbar实例详解
Jan 09 Javascript
详解JavaScript中return的用法
May 08 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
Jun 19 Javascript
angularjs $http调用接口的方式详解
Aug 13 Javascript
vue v-for直接循环数字实例
Nov 07 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 Javascript
详解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
无限级别菜单的实现
2006/10/09 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
详解php的socket通信
2015/08/11 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
10个实用的脚本代码工具
2010/05/04 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
python实现多层感知器
2019/01/18 Python
python做反被爬保护的方法
2019/07/01 Python
python实现宿舍管理系统
2019/11/22 Python
python实现密码强度校验
2020/03/18 Python
python怎么调用自己的函数
2020/07/01 Python
成教自我鉴定
2013/10/27 职场文书
英语专业毕业生自我鉴定
2013/11/09 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
大连导游词
2015/02/12 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS