4.5vue指令之v-on:

v-on

v-on的指令我們要了解4個(gè)方面:
1.用來干嘛?它的語法
2.為什么事件我們要加在methods中
3.怎么傳遞事件源
4.v-on的修飾符

語法:v-on:事件名稱=“事件處理函數(shù)(參數(shù))”   省略寫法:@事件名稱=“事件處理函數(shù)(參數(shù))” 
  • 演示如何為元素添加事件

  • 如何添加事件處理函數(shù)

    • 定義事件處理函數(shù)的位置:methods屬性
    • methods是一個(gè)單獨(dú)的成員
  • 為什么事件處理函數(shù)需要在methods中添加

    • 這個(gè)結(jié)構(gòu)中的this是指向當(dāng)前組件對象,
    • 理論上講,你也可以在data中定義,但是這里面的this指向null,如果是網(wǎng)頁文件指向window,這也是為什么我們在data中的數(shù)據(jù)可以直接在模板中取得,那么data中的數(shù)據(jù)也是存在與vue組件中的,它是怎么存在的呢??
      data中屬性會直接的存在vue組件中,所以當(dāng)你在methods中進(jìn)行取數(shù)據(jù)時(shí)候直接this.數(shù)據(jù)屬性名 即可


      01.png
  • data中只定義數(shù)據(jù),不定義功能行為

  • 如何去傳遞事件參數(shù)

    • 如果你沒有傳遞事件源對象,那么它也會默認(rèn)的傳遞事件源對象
    • 如果傳遞自定義參數(shù),那么默認(rèn)的事件源對象就不現(xiàn)傳遞啦
    • 但是,如果傳遞自定義參數(shù)的同時(shí),需要事件源對象,那么就需要手動傳遞$event
  • 示例:

    <button v-on:click='dosome("jack",$event)'>點(diǎn)我啊</button>
    ---------------------------------------------------------
    methods: {
        dosome (name, event) {
          //   console.log('謝謝你點(diǎn)我')
          console.log(name)
          console.log(event)
        }
      }
    
  • 簡寫:@

    <button @click='dosome("jack",$event)'>點(diǎn)我啊</button>
    
  • 事件修飾符:


    02.png
    • prevent:阻止元素的默認(rèn)行為
    • enter/13:鍵碼和鍵別名
    • once:只觸發(fā)一次
    • native:為組件的根元素添加原生事件
  • 示例:

<template>
    <div class="on">
        <p>這個(gè)文件用來說明v-on綁定事件</p>
        <p>{{msg}}</p>
        <!-- v-on:事件名稱=“事件處理函數(shù)(參數(shù))” -->
        <button v-on:click='dosome("jack",$event)'>點(diǎn)我啊</button>
        <button v-on:[type]='dothis'>你自由</button>
        <button @click='dosome("jack",$event)'>點(diǎn)我啊</button>
        <a  @click.prevent.stop='sayHi'>單擊我向你問好</a>
        <!-- <input type="text" v-model="key" @keydown.enter="showmsg"> -->
        <input type="text" v-model="key" @keydown.13="showmsg">
        <button @click.once='onceDo'>點(diǎn)我啊,只有一次機(jī)會</button>
        <button @click.once='key=123'>點(diǎn)我啊,只有一次機(jī)會</button>
    </div>
</template>
<script>
export default {
  data () {
    return {
      msg: 'hello',
      type: 'dblclick',
      key: 'abc'
    }
  },
  methods: {
    onceDo () {
      console.log('onceDo')
    },
    showmsg () {
      console.log(this.key)
    },
    sayHi (event) {
    //   event.preventDefault()
      alert('你好啊~~~')
    },
    dosome (name, event) {
      //   console.log('謝謝你點(diǎn)我')
      console.log(name)
      console.log(event)
    },
    dothis () {
      console.log('dothis')
    }
  }
}
</script>
<style lang="less" scoped>

</style>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 主要還是自己看的,所有內(nèi)容來自官方文檔。 介紹 Vue.js 是什么 Vue (讀音 /vju?/,類似于 vie...
    Leonzai閱讀 3,540評論 0 25
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,373評論 0 6
  • vue 2.0 漸進(jìn)式框架 MVC 單向通信 > m:model 數(shù)據(jù)層 保存數(shù)據(jù) > v:view視圖層 用戶界...
    web前端ling閱讀 866評論 0 0
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 簡單小巧、漸進(jìn)式、功能強(qiáng)大的技術(shù)棧 1.1.2 為什么學(xué)習(xí)...
    蔡華鵬閱讀 3,500評論 0 3
  • 生活無處不藝術(shù),是我漫步在泰國的感受。
    Orange_Ng閱讀 387評論 0 0

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