三、Vue.js綁定事件指令—傳參及獲取事件對(duì)象event的用法

1.如何進(jìn)行事件綁定及傳參

  • 標(biāo)準(zhǔn)寫(xiě)法:<元素 v-on:事件名="處理函數(shù)(實(shí)參值,...)">
  • 簡(jiǎn)寫(xiě):<元素 @事件名="處理函數(shù)(實(shí)參值,...)">
<元素 @事件名="處理函數(shù)(實(shí)參值,...)">
new Vue({
  el:"#app",
  data:{ ... },
  methods:{
    處理函數(shù)(形參){
      //this—>當(dāng)前new Vue()對(duì)象
      //可用this.變量名方式訪問(wèn)data中的變量,因?yàn)閙ethods中的方法,也是被打散后直接隸屬于new Vue()的。
     //其實(shí)和data中的變量打散后是平級(jí)的。都直接隸屬于new Vue()對(duì)象
    }
  }
})
  • 例如:
<div id="app">
  <button @click="change(-1)">-</button>
  <span>{{n}}</span>
  <button @click="change(+1)">+</button>
</div>
<script>
 var vm=new Vue({
   el:"#app",
   data:{n:0},
   methods:{
      change(i){
          if(i==+1){
              this.n++;
          }else{
              if(this.n>0){
                  this.n--;
               }
         }
      }
   }
})
</script>

2.只獲得事件對(duì)象,不需要傳自定義參數(shù)

<元素 @事件名="處理函數(shù)">

  • 處理函數(shù)后一定不要加(),加()是調(diào)用函數(shù)且不傳參數(shù)的意思;
  • 不加()是綁定事件處理函數(shù)的意思;
    只有不加()時(shí),vue才會(huì)像DOM一樣自動(dòng)將事件對(duì)象以處理函數(shù)第一個(gè)參數(shù)方式,傳入處理函數(shù)。
methods:{    event
               ↓
      處理函數(shù)(e){
      //e自動(dòng)獲得事件對(duì)象。獲得的事件對(duì)象和DOM中的事件對(duì)象完全一樣。
  }
}
  • 例如:
<div id="app">
  <div id="d1" @click="doit" style="width:300px;height:100px;margin:20px;background:#aaf">d1</div>
</div>
<script>
var vm=new Vue({
  el:"#app",
  data:{},
  methods:{
    doit(e){
      console.log(`點(diǎn)在d1的:x:${e.offsetX},y:${e.offsetY}`);
    }
  }
})
</script>

3.既需要獲得事件對(duì)象,又需要傳自定義參數(shù)

<元素 @事件名="處理函數(shù)($event,其他實(shí)參值,...)">

  • 因?yàn)榧恿?)就無(wú)法自動(dòng)傳入事件對(duì)象了。所以,必須手動(dòng)傳入事件對(duì)象和其他實(shí)參值。
  • $event是vue將DOM中事件對(duì)象重新封裝過(guò)得一個(gè)代表事件對(duì)象的關(guān)鍵詞。
  • vue中所有$開(kāi)頭的關(guān)鍵詞,都不能改名。
methods:{
         $event  其他實(shí)參
             ↓      ↓
    處理函數(shù)(e,其他形參,...){
    //e自動(dòng)獲得事件對(duì)象,獲得的事件對(duì)象,和DOM中事件對(duì)象完全一樣
  }
}

例如:

<div id="app">
  <div id="d1" @click="doit($event,'d1')" style="width:300px;height:100px;margin:20px;background:#aaf">d1</div>
<div id="d2" @click="doit($event.'d2')" style="width:300px;height:100px;margin:20px;background:#ffa">d2</div>
</div>
<script>
var vm=new Vue({
  el:"#app",
  data:{},
  methods:{
    doit(e){
      console.log(`點(diǎn)在${name}的:x:${e.offsetX},y:${e.offsetY}`);
    }
  }
})
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,690評(píng)論 1 11
  • 函數(shù)和對(duì)象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門(mén)語(yǔ)言來(lái)說(shuō)都是核心的概念。通過(guò)函數(shù)可以封裝任意多條語(yǔ)句,而且...
    道無(wú)虛閱讀 4,950評(píng)論 0 5
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,851評(píng)論 0 3
  • 函數(shù)只定義一次,但可能被執(zhí)行或調(diào)用任意次。JS函數(shù)是參數(shù)化的,函數(shù)的定義會(huì)包括一個(gè)稱為形參的標(biāo)識(shí)符列表,這些參數(shù)在...
    PySong閱讀 375評(píng)論 0 0
  • 好久都沒(méi)有寫(xiě)點(diǎn)東西了, 前段時(shí)間工作搞得頭大,真的就是一起加班到死了。廢話不多說(shuō),寫(xiě)這篇文章是因?yàn)檫@次因?yàn)?eve...
    ebfc7d0362e4閱讀 10,959評(píng)論 10 29

友情鏈接更多精彩內(nèi)容