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对img进行操作(换图片/切图/轮换/停止)
Apr 17 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
介绍一个简单的JavaScript类框架
Jun 24 Javascript
使用递归遍历对象获得value值的实现方法
Jun 14 Javascript
学习Node.js模块机制
Oct 17 Javascript
bootstrap警告框使用方法解析
Jan 13 Javascript
详谈js中window.location.search的用法和作用
Feb 13 Javascript
vue组件发布到npm简单步骤
Nov 30 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
如何阻止移动端浏览器点击图片浏览
Aug 29 Javascript
vue3.0中使用element的完整步骤
Mar 04 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自动加载autoload机制示例分享
2014/02/20 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
Javascript的this用法
2017/01/16 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
Python中的字符串替换操作示例
2016/06/27 Python
10个Python小技巧你值得拥有
2018/09/29 Python
python中嵌套函数的实操步骤
2019/02/27 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
如何表示python中的相对路径
2020/07/08 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
员工培训心得体会
2013/12/30 职场文书
服务承诺书范文
2014/05/19 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
公司仓库管理制度
2015/08/04 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python