浅谈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 相关文章推荐
Javascript创建自定义对象 创建Object实例添加属性和方法
Jun 04 Javascript
验证手机号码的JS方法分享
Sep 10 Javascript
JQuery插件开发示例代码
Nov 06 Javascript
jquery实现选中单选按钮下拉伸缩效果
Aug 06 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
Mar 09 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
Jan 13 Javascript
ReactNative实现图片上传功能的示例代码
Jul 11 Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
详解ES6 Fetch API HTTP请求实用指南
Nov 14 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
Jul 21 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
Aug 11 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
2014/08/20 PHP
PHP使用递归生成文章树
2015/04/21 PHP
帝国cms目录结构分享
2015/07/06 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
Js 弹出框口并返回值的两种常用方法
2010/12/30 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
ejs v9 javascript模板系统
2012/03/21 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
python3实现随机数
2018/06/25 Python
python实现根据文件格式分类
2019/10/31 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
办公室驾驶员岗位职责
2013/11/15 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
助学感谢信范文
2015/01/21 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
MySQL中连接查询和子查询的问题
2021/09/04 MySQL