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 相关文章推荐
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
Jul 11 Javascript
javascript 延迟加载技术(lazyload)简单实现
Jan 17 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
Oct 11 Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 Javascript
查找页面中所有类为test的结点的方法
Mar 28 Javascript
元素绑定click点击事件方法
Jun 08 Javascript
原生js编写焦点图效果
Dec 08 Javascript
JS实现瀑布流布局
Oct 21 Javascript
node.js中axios使用心得总结
Nov 29 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
Oct 29 Javascript
详解微信小程序的不同函数调用的几种方法
May 08 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
PHP7 新增功能
2021/03/09 PHP
jquery中动态效果小结
2010/12/16 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
python实现AES加密解密
2019/03/28 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
敬老文明号事迹材料
2014/01/16 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
高中家长寄语
2014/04/02 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
统计学教授推荐信
2014/09/18 职场文书
工程部文员岗位职责
2015/02/04 职场文书
支行行长岗位职责
2015/02/15 职场文书
学习保证书100字
2015/02/26 职场文书
党员个人承诺书
2015/04/27 职场文书
电影开国大典观后感
2015/06/04 职场文书
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫
JS setTimeout与setInterval的区别
2022/04/20 Javascript