使用 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 相关文章推荐
Jquery替换已存在于element上的event的方法
Mar 09 Javascript
jquery三个关闭弹出层的小示例
Nov 05 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
Jan 02 Javascript
angularjs+bootstrap菜单的使用示例代码
Mar 07 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 Javascript
JS实现验证码倒计时的注册页面
Jan 02 Javascript
JavaScript中七种流行的开源机器学习框架
Oct 11 Javascript
详解json串反转义(消除反斜杠)
Aug 12 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
Sep 09 Javascript
element-ui中按需引入的实现
Dec 25 Javascript
vue实现列表滚动的过渡动画
Jun 29 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
PHP include_path设置技巧分享
2011/07/03 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
解析javascript 实用函数的使用详解
2013/05/10 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
script标签属性用type还是language
2015/01/21 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
详解js中Json的语法与格式
2016/11/22 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
Node 代理访问的实现
2019/09/19 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python实现名片管理系统项目
2019/04/26 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
Django中FilePathField字段的用法
2020/05/21 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
Python 的 f-string 可以连接字符串与数字的原因解析
2021/02/20 Python
Eclipse面试题
2014/03/22 面试题
大专毕业生求职信
2014/07/05 职场文书
加薪申请报告范本
2015/05/15 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书