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 相关文章推荐
JS之小练习代码
Oct 12 Javascript
JavaScript 学习笔记(七)字符串的连接
Dec 31 Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 Javascript
js关闭父窗口时关闭子窗口
Apr 01 Javascript
Jquery实现自定义tooltip示例代码
Feb 12 Javascript
javascript版2048小游戏
Mar 18 Javascript
jQuery的animate函数实现图文切换动画效果
May 03 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
Dec 28 Javascript
canvas雪花效果核心代码分享
Feb 19 Javascript
深入理解ES6中let和闭包
Feb 22 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
Dec 04 Javascript
JS前端广告拦截实现原理解析
Feb 17 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 404错误页面实现代码
2009/06/22 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
php中instanceof 与 is_a()区别分析
2015/03/03 PHP
浅谈PHP中的
2016/04/23 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
Python 正则表达式的高级用法
2016/12/04 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
应聘医药销售自荐书范文
2014/02/08 职场文书
入职担保书怎么写
2014/05/12 职场文书
初中新生军训方案
2014/05/13 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
小学生教师节广播稿
2015/08/19 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
初中政治教师教学反思
2016/02/23 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
详解MindSpore自定义模型损失函数
2021/06/30 Python
快速学习Oracle触发器和游标
2021/06/30 Oracle