zoukankan      html  css  js  c++  java
  • vue系列--vue是如何实现绑定事件

    一、前言

      vuejs中的事件绑定,使用<v-on:事件名 = 函数名>来完成的,这里函数名是定义在Vue实例中的methods对象中的,Vue实例可以直接访问其中的方法。 

    二、事件绑定方式

    1、 直接在标签中写js方法

     <button v-on:click="alert('hi')">执行方法的第一种写法</button>

    2、调用method的办法

     <button v-on:click="run()">执行方法的第一种写法</button>
     
          <button @click="run()">执行方法的 简写 写法</button>
    export default {     
          data () { 
            return {
              msg: '你好vue',
              list:[]      
            }
          },
          methods:{
               run:function(){
                  alert('这是一个方法');
                 }
               }
     }

    (1)方法传参,方法直接在调用时在方法内传入参数

     <button @click="deleteData('111')">执行方法传值111</button>
     
          <button @click="deleteData('222')">执行方法传值2222</button>
     deleteData(val){
                alert(val);
            },

    (2)传入事件对象

     <button data-aid='123' @click="eventFn($event)">事件对象</button>
    eventFn(e){
              console.log(e);
              // e.srcElement  dom节点
              e.srcElement.style.background='red';
              console.log(e.srcElement.dataset.aid);  /*获取自定义属性的值*/
            }

    三、事件修饰符

    1、stop  //阻止事件继续传播 即阻止它的捕获和冒泡过程

    方法一: @click='show($event)'    我们有了事件对象后,我们函数中是不是就可以利用原生中的e.cancelBubble=true;
    
    方法二: @click.stop='show()'    只要在事件后面加 .stop  就可以阻止事件冒泡

    举个例子:

    实例:如下点击内部点击,阻止了冒泡过程,即只执行tz这个方法,如果不加.stop,先执行tz方法,后执行gett方法。即通过了冒泡这个过程。

    <div v-on:click="gett">
       外部点击
       <div  v-on:click.stop="tz">内部点击</div>
    </div>

    2、prevent    //阻止默认事件:

    方法一: @click='show($event)'    我们有了事件对象后,我们函数中是不是就可以利用原生中的 e.preventDefault();
    
    方法二: @click.prevent='show()'   只要在事件后面加 .prevent  就可以阻止默认事件。

    举个例子:阻止了a标签的默认刷新 

    <a href="" v-on:click.prevent>点击</a>

    3、capture // 添加事件监听器时使用事件捕获模式,即在捕获模式下触发 

    实例:在点击最里层的点击6时,gett方法先执行,因为gett方法在捕获模式执行的,先与冒泡事件。下列执行顺序 geet->set->tz ,因为后俩个还是冒泡模式下触发的事件。

    <div v-on:click.capture="gett">外部点击5
        <div  v-on:click="tz">内部点击5
            <div  v-on:click="set">点击6</div>
        </div>
    </div>

    4、self //当前元素自身时触发处理函数时才会触发函数

    原理:是根据event.target确定是否当前元素本身,来决定是否触发的事件/函数 

    实例:如果点击内部点击2,冒泡不会执行gett方法,因为event.target指的是内部点击2的dom元素,不是外部点击1的,所以不会触发自己的点击事件。

    <div v-on:click.self="gett">
       外部点击1
       <div  v-on:click="tz">内部点击2</div>
    </div>

    5、once //只触发一次 

    实例:

    <div  v-on:click.once="tz">once</div>

    6、键盘事件

    方法一:@keydown='show()'     当然我们传个$event  也可以在函数中获 ev.keyCode 

    if(ev.keyCode==13){
        alert('你按了回车键!')
    }

    方法二:

      <input type="text" @keyup.enter="show()">回车执行
      <input type="text" @keydown.up='show()' >上键执行
      <input type="text" @keydown.down='show()' >下键执行
      <input type="text" @keydown.left='show()'    >左键执行
      <input type="text" @keydown.right='show()'   >右键执行

    【谢谢关注和阅读,后续新的文章首发:sau交流学习社区:https://www.mwcxs.top/

  • 相关阅读:
    面试题
    iOS 对overflow:scroll使用
    iOS微信页面 长按图片出现【存储图像】和【拷贝】不出现【发送朋友】【保存图片】
    cookie设置和读取以及获取超链接参数
    学习资源链接
    gulp中文乱码问题
    原生ajax基础知识笔记
    Visual Studio Code 插件推荐
    前端开发中一些容易混淆的概念汇总
    jq中的类样式操作与html5中的类样式操作的对比
  • 原文地址:https://www.cnblogs.com/chengxs/p/11057089.html
Copyright © 2011-2022 走看看