Vue事件处理原理及过程详解


Posted in Javascript onMarch 11, 2020

Vue事件监听的方式貌似违背了关注点分离(separation of concern)的传统理念。实际上,所有的Vue.js事件处理方法和表达式都严格绑定在当前视图的ViewModel上,它不会导致维护上的困难,使用v-on有以下好处:

1、扫一眼HTML模板便能轻松定位在JS代码里对应的方法。

2、无须在JS里手动绑定事件,ViewModel代码可以是非常纯粹的逻辑,和DOM完全解耦,更易于测试。

3、当一个ViewModel被销毁时,所有的事件处理器都会自动被删除,无须担心自己如何清理它们。

事件处理步骤

1. 绑定监视

2. 事件修饰符

3. 按键修饰符

代码如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>

<body>
<!--列表过滤与排序-->
<div id="demo">
  <h2>绑定监听</h2>
  <button @click="test1">test1</button>
  <button @click="test2(123)">test2</button>
  <button @click="test3">test3</button> <!-- 无参函数,实际上是传了$event对象-->
  <button @click="test4(1234,$event)">test4</button>

  <h2>事件修饰符</h2>
  <!--存在事件冒泡的情况-->
  <h3>阻止事件冒泡</h3>
  <div style="width: 200px; height: 200px; background: red" @click="test5">
    <!--@click.stop 停止事件冒泡 -->
    <div style="width: 100px; height: 100px; background: blue" @click.stop="test6"></div>
  </div>

  <br>
  <h3>阻止事件的默认行为</h3>
  <a href="http://www.baidu.com" rel="external nofollow" @click.prevent="test7">去百度</a>


  <br>
  <h2>按键修饰符</h2>
  <!-- <input type="text" @keyup="test8">--> <!--原始写法-->
  <!--<input type="text" @keyup.13="test8">--> <!--13就是enter键的keyCode码-->
  <input type="text" @keyup.enter="test8"/>  <!--直接写名字-->

</div>
<script type="text/javascript" src="lib/vue.min.js"></script>
<script>
  new Vue({
    el: "#demo",
    methods: {
      test1(){
        alert('test1');
      },
      test2(number){
        alert(number);
      },
      test3(event){
        alert(event.target.innerHTML);
      },
      test4(number, event){
        alert(number + '----' + event.target.innerHTML);
      },
      test5(){
        alert('out')
      },
      test6(){
        alert('inner')
      },
      test7(){
//        event.preventDefault()  //原生的方式阻止事件的默认行为
        alert('点击,但是通过@click.prevent阻止事件的默认行为,不会跳转到百度去了')
      },
      test8(event){
//        原始写法;
//        if (event.keyCode === 13){ // Enter键
//          alert(event.target.value)
//        }
        alert(event.target.value)

      }

    }
  });
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
简略说明Javascript中的= =(等于)与= = =(全等于)区别
Apr 16 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
Jun 17 Javascript
JS控制文本框textarea输入字数限制的方法
Jun 17 Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 Javascript
分享一个常用的javascript静态类
Dec 31 Javascript
jQuery实现友好的轮播图片特效
Jan 12 Javascript
谈谈对offsetleft兼容性的理解
Nov 11 Javascript
探究Vue.js 2.0新增的虚拟DOM
Oct 20 Javascript
JQuery获取鼠标进入和离开容器的方向
Dec 29 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
vue中设置height:100%无效的问题及解决方法
Jul 27 Javascript
vue生成文件本地打开查看效果的实例
Sep 06 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
Mar 11 #Javascript
使用Node.js实现base64和png文件相互转换的方法
Mar 11 #Javascript
vue 移动端记录页面浏览位置的方法
Mar 11 #Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 #Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
Mar 10 #Javascript
jquery实现烟花效果(面向对象)
Mar 10 #jQuery
非常漂亮的js烟花效果
Mar 10 #Javascript
You might like
PHP计算近1年的所有月份
2017/03/13 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
Django之form组件自动校验数据实现
2020/01/14 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
Java语言程序设计测试题改错题部分
2014/07/22 面试题
房地产出纳岗位职责
2013/12/01 职场文书
七年级音乐教学反思
2014/01/26 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
文化产业实施方案
2014/06/07 职场文书
工作说明书格式
2014/07/29 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
小学生读书笔记范文
2015/06/30 职场文书
Python入门学习之类的相关知识总结
2021/05/25 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
Golang map映射的用法
2022/04/22 Golang