v-on:click(简写@click)绑定事件加括号和不加括号


应该是 Vue 对函数调用表达式额外用了一个函数做了层包装。

事先说明:加与不加括号的区别在于事件对象参数 event 的处理。不加括号时,函数第一个参数为 event,加了括号后,需要手动传入 $event 才能获得事件对象。

 

1、如果事件绑定的方法没有参数可以选择加括号也可以不加括号

 1 <template>
 2   <div>
 3     <input type="button" value="按钮1" v-on:click="fn">
 4     <input type="button" value="按钮2" v-on:click="fn()">
 5   </div>
 6 </template>
 7 
 8 <script>
 9  export default { 10  data() { 11       return { 12  a:10
13  } 14  }, 15  methods:{ 16  fun(){ 17  console.log(this.a) 18  } 19  } 20  } 21 </script>

上面的函数调用的时候,加不加括号,效果是一样的。

2、如果不加括号,函数的第一个参数为 event 。

 1 <template>
 2   <div>
 3     <input type="button" value="按钮1" v-on:click="fn">
 4   </div>
 5 </template>
 6 
 7 <script>
 8  export default {  9  data() { 10       return { 11  a:10
12  } 13  }, 14  methods:{ 15  fun(e){ 16  console.log(e) 17  } 18  } 19  } 20 </script>

3、如果加了括号,需要手动传入 $event 才能获得事件对象。

<template>
  <div>
    <input type="button" value="按钮1" v-on:click="fn($event)">
  </div>
</template>

<script> export default { data() { return { a:10 } }, methods:{ fun(e){ console.log(e) } } } </script>

如果 v-on:click="fn()" 这里不手动添加 $event ,那么 fun 函数里面的 console.log(e) 打印出来的就是 undefined 。

 

4、父子组件的引用:

  涉及到父子组件的引用,有时候需要传递额外的参数,必须加括号,第一个参数为 $event ,后面跟额外的参数,具体可参考 vue父子组件之间的传额外的参数

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM