vue之事件处理

一、事件处理方法

1、格式

  • 完整格式:v-on:事件名="函数名" 或 v-on:事件名="函数名(参数……)"

      缩写格式:@事件名="函数名" 或 @事件名="函数名(参数……)"

     注意:@后面没有冒号

  • event :函数中的默认形参,代表原生 DOM 事件

      当调用的函数,有多个参数传入时,需要使用原生DOM事件,则通过 $event 作为实参传入作用:用于监听 DOM 事件

2、实例

<div id="app">

    <!-- `greet` 是在下面定义的方法名 -->
    <button v-on:click="greet">无参数事件</button>
    <button v-on:click="greet2(‘hellogreet2‘)">有参数事件</button>
    <button v-on:click="greet3">无参数event</button>
    <button v-on:click="greet4(‘hello‘,$event)">有参数event</button>

</div>
<script>

  var vm = new Vue({
      el: ‘#app‘,
      data: {},

      // 在 `methods` 对象中定义方法
      methods: {

        greet: function () {
          alert("无参数")
        },

        greet2: function (arg) {
          console.log(arg)
          alert(arg)
        },

        // `event` 是默认原生 DOM 事件
        greet3: function (event) {
          console.log(event.target.tagName)
          console.log(event.target.innerHTML)

        },
        // `event` 是默认原生 DOM 事件,如果有多个参数,event要以$event传入
        greet4: function (arg, event) {
          console.log(arg)
          console.log(event.target.tagName)
          console.log(event.target.innerHTML)
        }

      }

    }
  )

</script>

二、事件修饰符

1、.stop  阻止单击事件继续传播  event.stopPropagation()

<div id="app">

    <div @click="doThis">
        <!--点击后会调用doWhat再调用doThis-->
        <button @click="doWhat">单击事件会继续传播</button>
    </div>

    <!-- 阻止单击事件继续传播,-->
    <div @click="doThis">
        <!--点击后只调用doWhat-->
        <button @click.stop="doWhat">阻止单击事件会继续传播</button>
    </div>

</div>
 // 在 `methods` 对象中定义方法
      methods: {

        doThis: function () {
          alert("doThis....");
        },
        doWhat:function(){
          alert("doWhat....");
        },

}

2、.prevent  阻止事件默认行为  event.preventDefault()

<div id="app">

    <!-- 阻止事件默认行为 -->
    <a href="http://www.baidu.com" @click.prevent="stopDefault">百度</a>

</div>
      // 在 `methods` 对象中定义方法
      methods: {
        stopDefault() {
          alert("href默认跳转被阻止....")
        },
}

3、.once  点击事件将只会触发一次

<div id="app">

    <!-- 点击事件将只会触发一次 -->
    <button @click.once="doOnce">点击事件将只会触发一次</button>

</div>
// 在 `methods` 对象中定义方法
      methods: {
        doOnce() {
          alert("只触发一次")
        },
}

4、.self只会触发自己范围内的事件,不会包含子元素

    <div @click.self="outer" style="width: 200px;height:100px;background: antiquewhite">  
            
        <button @click.stop="inner">inner</button>
            
    </div>
 // 在 `methods` 对象中定义方法
      methods: {
        outer() {
          alert("outer")
        },

        inner() {
          alert("inner")
        },
}

5、.capture 捕获事件

嵌套多层父子关系,所有父子层都有点击事件,点击子节点,就会触发从外至内  父节点-》子节点的点击事件

    <div class="outeer" @click.capture="outer" style="width: 200px;height:100px;background: antiquewhite">
                   
        <button @click.capture="inner">inner</button>
            
    </div>
      // 在 `methods` 对象中定义方法
      methods: {
        outer() {
          alert("outer")
        },

        inner() {
          alert("inner")
        },

先出现:

再出现:

三、按键修饰符

1、格式

  • 格式:v-on:keyup.按键名 或 @keyup.按键名
  • 常用按键名:
.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right

2、实例

<div id="app">

    <label>
        <!--进入输入框按回车时调用keyEnter-->
        <input @keyup.enter="keyEnter">
    </label>

</div>
      // 在 `methods` 对象中定义方法
      methods: {
        keyEnter(){
          alert("enter...")
        },
}

四、鼠标修饰符

1、使用方式

.left
.right
.middle

这些修饰符会限制处理函数仅响应特定的鼠标按钮。

  • @click.left="事件名"   点击鼠标左键触发事件
  • @click.right="事件名"  点击鼠标右键触发事件
  • @click.middle="事件名" 点击鼠标滚轮触发事件

2、实例

<div id="app">

    <div @click.left="mouseLeft">点击鼠标左键触发事件</div>

</div>
 // 在 `methods` 对象中定义方法
      methods: {
        mouseLeft(){
          alert("点击鼠标左键触发事件")
        },
}

详情:https://cn.vuejs.org/v2/guide/events.html




原文地址:https://www.cnblogs.com/shenjianping/p/11315848.html

时间: 2024-10-10 07:03:34

vue之事件处理的相关文章

一起学Vue之事件处理

在Vue进行前端开发中,事件监听是必不可少的功能,本文通过简单的小例子,简述v-on的简单用法,仅供学习分享使用,如有不足之处,还请指正. 监听事件 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码.如下所示: 1 <button v-on:click="counter += 1">Add 1</button> 2 <p>按钮被点击了 {{ counter }} 次.</p> 其中counter为V

【04】Vue 之 事件处理

4.1. 监听事件的Vue处理 Vue提供了协助我们为标签绑定时间的方法,当然我们可以直接用dom原生的方式去绑定事件.Vue提供的指令进行绑定也是非常方便,而且能让ViewModel更简洁,逻辑更彻底.所以还是推荐大家使用的. Vue提供了v-on指令帮助我们进行事件的绑定. 基本的内联事件处理方法[官方demo]: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF

VUE:事件处理和表单输入绑定

事件处理 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>07_事件处理</title> </head> <body> <!-- 1.绑定监听: v-on:xxx="fun" @xxx="fun" @xxx="fun(参数)" 默认事件形参:event 隐

Vue事件处理

前面的话 Vue事件监听的方式貌似违背了关注点分离(separation of concern)的传统理念.实际上,所有的Vue.js事件处理方法和表达式都严格绑定在当前视图的ViewModel上,它不会导致维护上的困难.使用v-on有以下好处: 1.扫一眼HTML模板便能轻松定位在JS代码里对应的方法 2.无须在JS里手动绑定事件,ViewModel代码可以是非常纯粹的逻辑,和DOM完全解耦,更易于测试 3.当一个ViewModel被销毁时,所有的事件处理器都会自动被删除.无须担心如何自己清理

Vue基础篇--6事件处理

Vue基础篇--6事件处理 1.监听事件 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码. 示例 <div id="exp"> <button v-on:click="count +=1">add 1</button> <p>The button above has been clicked {{count}} times.</p> </div> new

Vue.js Method

Method Vue.js 的事件监听一般都通过 v-on 指令配置在HTML中,虽然也可以在Javascript 代码中使用原生 addEventListener 方法添加事件监听,但Vue.js 本身并不提倡如此. 看上去这种方式不符合传统的"关注点分离"的理念,但其实所有的Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel 上.实际上,采用它提供的 v-on 指令有以下几点好处: (1).通过查看HTML 模板便能轻松定位 Javascript 代码中对

vue事件处理器

1.监听事件 可以用 v-on 指令监听 DOM 事件来触发一些 JavaScript 代码. 示例: <div id="example-1"> <button v-on:click="counter += 1">增加 1</button> <p>这个按钮被点击了 {{ counter }} 次.</p> </div> var example1 = new Vue({ el: '#example

Vue.2.0.5-事件处理器

监听事件 可以用 v-on 指令监听 DOM 事件来触发一些 JavaScript 代码. 示例: <div id="example-1"> <button v-on:click="counter += 1">增加 1</button> <p>这个按钮被点击了 {{ counter }} 次.</p> </div> var example1 = new Vue({ el: '#example-1

vue组件的那些事($children,$refs,$parent)的使用

如果项目很大,组件很多,怎么样才能准确的.快速的寻找到我们想要的组件了?? 1)$refs 首先你的给子组件做标记.demo :<firstchild ref="one"></firstchild> 然后在父组件中,通过this.$refs.one就可以访问了这个自组件了,包括访问自组件的data里面的数据,调用它的函数 2)$children 他返回的是一个组件集合,如果你能清楚的知道子组件的顺序,你也可以使用下标来操作: for(let i=0;i<t