浅谈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 相关文章推荐
jquery 插件学习(二)
Aug 06 Javascript
jquery $.each() 使用小探
Aug 23 Javascript
JS下载文件|无刷新下载文件示例代码
Apr 17 Javascript
基于Turn.js 实现翻书效果实例解析
Jun 20 Javascript
vue分类筛选filter方法简单实例
Mar 30 Javascript
js 数字、字符串、布尔值的转换方法(必看)
Apr 07 Javascript
JavaScript事件方法(实例讲解)
Jun 27 Javascript
JS+H5 Canvas实现时钟效果
Jul 20 Javascript
js中怎么判断两个字符串相等的实例
Jan 17 Javascript
Vue之封装公用变量以及实现方式
Jul 31 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
Aug 15 Javascript
React 条件渲染最佳实践小结(7种)
Sep 27 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 Ajax乱码
2008/04/09 PHP
PHP4中session登录页面的应用
2008/07/25 PHP
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
python处理图片之PIL模块简单使用方法
2015/05/11 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
Django数据库操作之save与update的使用
2020/04/01 Python
Django使用rest_framework写出API
2020/05/21 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
小学三好学生事迹材料
2014/08/15 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书