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 相关文章推荐
33个优秀的 jQuery 图片展示插件分享
Mar 14 Javascript
THREE.JS入门教程(2)着色器-上
Jan 24 Javascript
javaScript NameSpace 简单说明介绍
Jul 18 Javascript
js判断客户端是iOS还是Android等移动终端的方法
Dec 11 Javascript
使用js显示当前时间示例
Mar 02 Javascript
js全选按钮的实现方法
Nov 17 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
Jan 04 Javascript
jQuery基础知识点总结(DOM操作)
Jun 01 Javascript
AngularJs Forms详解及简单示例
Sep 01 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
Oct 31 Javascript
vue 表单验证按钮事件交由父组件触发的方法
Dec 17 Javascript
vue+moment实现倒计时效果
Aug 26 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
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Python实现Kmeans聚类算法
2020/06/10 Python
django session完成状态保持的方法
2018/11/27 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
全球最大的服务市场:Fiverr
2017/01/03 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
刑事辩护授权委托书范本
2014/10/17 职场文书
电气工程师岗位职责
2015/02/12 职场文书
污水处理保证书
2015/05/09 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang