浅谈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 相关文章推荐
收集的10个免费的jQuery相册
Feb 26 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
Apr 15 Javascript
仿新浪微博返回顶部的jquery实现代码
Oct 01 Javascript
无限树Jquery插件zTree的常用功能特性总结
Sep 11 Javascript
EditPlus中的正则表达式 实战(4)
Dec 15 Javascript
JavaScript中引用vs复制示例详析
Dec 06 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
Jan 29 Javascript
小程序自定义单页面、全局导航栏的实现代码
Mar 15 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
Aug 02 Javascript
小程序实现锚点滑动效果
Sep 23 Javascript
VueJS实现用户管理系统
May 29 Javascript
Vue如何清空对象
Mar 03 Vue.js
使用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 无法载入mysql扩展
2010/03/12 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
JS实现分页导航效果
2020/02/19 Javascript
详细分析vue表单数据的绑定
2020/07/20 Javascript
Python递归遍历列表及输出的实现方法
2015/05/19 Python
python实现石头剪刀布程序
2021/01/20 Python
python基础教程之while循环
2019/08/14 Python
Python PIL图片添加字体的例子
2019/08/22 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
医学专业五年以上个人求职信
2013/12/03 职场文书
建材业务员岗位职责
2013/12/08 职场文书
物流合作计划书
2014/01/10 职场文书
个人能力自我鉴赏
2014/01/25 职场文书
个人委托函范文
2015/01/29 职场文书
科级干部培训心得体会
2016/01/06 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
Python时间操作之pytz模块使用详解
2022/06/14 Python
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python