使用 vue 实例更好的监听事件及vue实例的方法


Posted in Javascript onApril 22, 2019

文章举例说明一下在 vue 中如何更好的监听浏览器事件。原文介绍了一种新增 vue 实例的方法,单独监听事件。这样代码书写较为简练,容易管理。

当监听如下事件的传统做法是:

  • window.scrollX
  • window.scrollY
  • window.innerHeight
  • window.innerWidth

通常需要书写很多代码:

created () {
 this.$el.addEventListener('click', this.someMethod)
},
destroyed () {
 this.$el.removeEventListener('click', () => this.someMethod)
}

更好的方式是使用新的 Vue 实例

import Vue from 'vue'
const WindowInstanceMap = new Vue({
 data() {
  return {
   scrollY: 0
  }
 },
 created() {
  window.addEventListener('scroll', e => {
   this.scrollY = window.scrollY
  })
 },
})
export default WindowInstanceMap

然后在项目中使用:

// AppNav.vue
import WindowInstanceMap from './WindowInstanceMap.js'
export default {
 computed: {
  scrollY () { return WindowInstanceMap.scrollY },
  isCollapsed () {
   return this.scrollY < 100
  }
 }
}

这样做的好处是:

  • 不会大量占用 dev-tool 的版面显示变动信息
  • 减少主要项目的代码
  • 因为 dev-tool 不支持多实例的调试,因此需要对这部分代码保持简单

最后看看效果:

使用 vue 实例更好的监听事件及vue实例的方法

总结

以上所述是小编给大家介绍的使用 vue 实例更好的监听事件及vue实例的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
Jul 29 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
Jun 08 Javascript
jquery+json实现动态商品内容展示的方法
Jan 14 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
非常棒的jQuery图片轮播效果
Apr 17 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
Bootstrap导航条的使用和理解3
Dec 14 Javascript
详解vue.js组件化开发实践
Dec 14 Javascript
详解jQuery lazyload 懒加载
Dec 19 Javascript
JS拉起或下载app的实现代码
Feb 22 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
Sep 02 Javascript
webpack.DefinePlugin与cross-env区别详解
Feb 23 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
Apr 22 #Javascript
关于vue-cli 3配置打包优化要点(推荐)
Apr 22 #Javascript
说说如何利用 Node.js 代理解决跨域问题
Apr 22 #Javascript
详解Vue中使用Axios拦截器
Apr 22 #Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
Apr 22 #Javascript
vue 项目build错误异常的解决方法
Apr 22 #Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 #Javascript
You might like
服务器端解压缩zip的脚本
2006/12/22 PHP
php递归函数怎么用才有效
2018/02/24 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
JS 图片缩放效果代码
2010/06/09 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
js实现随机抽奖
2020/03/19 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
Python下singleton模式的实现方法
2014/07/16 Python
Python易忽视知识点小结
2015/05/25 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
对python的文件内注释 help注释方法
2018/05/23 Python
django ajax json的实例代码
2018/05/29 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
python将unicode和str互相转化的实现
2020/05/11 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
村级环境卫生整治方案
2014/05/04 职场文书
市级青年文明号申报材料
2014/05/26 职场文书