浅谈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 选择器、DOM操作、事件、动画
Nov 25 Javascript
给事件响应函数传参数的四种方式小结
Dec 05 Javascript
javascript简单实现图片预加载
Dec 03 Javascript
Python脚本后台运行的几种方式
Mar 09 Javascript
PHP+jQuery+Ajax实现多图片上传效果
Mar 14 Javascript
JavaScript 浏览器对象模型BOM使用介绍
Apr 13 Javascript
玩转JavaScript OOP - 类的实现详解
Jun 08 Javascript
BootStrap Typeahead自动补全插件实例代码
Aug 10 Javascript
JS弹出窗口的运用与技巧大全
Nov 01 Javascript
干货!教大家如何选择Vue和React
Mar 13 Javascript
Kindeditor单独调用多图上传实例
Jul 31 Javascript
了解重排与重绘
May 29 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
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
node.js获取参数的常用方法(总结)
2017/05/29 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
python使用插值法画出平滑曲线
2018/12/15 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
Python读取stdin方法实例
2019/05/24 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
pygame实现非图片按钮效果
2019/10/29 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
Python正则表达式学习小例子
2020/03/03 Python
RetroStage德国:复古服装
2019/02/03 全球购物
资产经营总监岗位职责
2013/12/04 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
主题团日活动总结
2014/06/25 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
模范教师材料大全
2014/12/16 职场文书
民事答辩状范本
2015/05/21 职场文书
紫日观后感
2015/06/05 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
如何用Navicat操作MySQL
2021/05/12 MySQL
MySQL池化框架学习接池自定义
2022/07/23 MySQL