【技術積累】Vue.js中的事件【一】

来源:https://www.cnblogs.com/yyyyfly1/archive/2023/07/15/17557145.html
-Advertisement-
Play Games

博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...


Vue中的事件是什麼

在Vue.js中,事件是用於處理用戶交互的重要機制。Vue.js提供了一系列的事件處理方法和指令,使開發者能夠方便地處理用戶的各種操作。

1. 事件綁定:Vue.js通過v-on指令來綁定事件。可以在HTML標簽上使用v-on指令來監聽特定的事件,併在觸發事件時執行相應的方法。例如,可以使用v-on:click來監聽點擊事件,v-on:input來監聽輸入事件等。

2. 事件修飾符:Vue.js提供了一些事件修飾符,用於對事件進行進一步的處理。例如,可以使用.stop修飾符來阻止事件冒泡,.prevent修飾符來阻止預設行為,.capture修飾符來將事件綁定到父元素上等。

3. 自定義事件:除了原生的DOM事件,Vue.js還支持自定義事件。可以使用Vue實例的$emit方法來觸發自定義事件,並使用v-on指令來監聽自定義事件。這樣可以在組件之間進行通信,實現組件的解耦。

4. 事件參數:在事件處理方法中,可以通過$event參數來訪問事件對象。事件對象包含了觸發事件的詳細信息,例如滑鼠位置、鍵盤按鍵等。可以在事件處理方法中使用$event來獲取這些信息。

5. 事件修飾符:Vue.js還提供了一些事件修飾符,用於對事件進行進一步的處理。例如,可以使用.stop修飾符來阻止事件冒泡,.prevent修飾符來阻止預設行為,.capture修飾符來將事件綁定到父元素上等。

6. 事件監聽器:除了使用v-on指令來綁定事件,Vue.js還提供了一種更靈活的方式來監聽事件,即使用事件監聽器。可以使用Vue實例的$on方法來監聽事件,並使用$off方法來取消監聽。這樣可以在任何地方監聽和取消監聽事件。

總之,Vue.js中的事件機制非常靈活和強大,可以滿足各種用戶交互的需求。開發者可以通過事件綁定、事件修飾符、自定義事件等方式來處理用戶的各種操作,並實現組件之間的通信。

Vue.js中的事件修飾符

Vue.js中的事件修飾符用於在處理事件時提供額外的功能。以下是Vue.js中常用的事件修飾符:

1. .stop:阻止事件冒泡。使用該修飾符可以阻止事件向父元素傳播。

2. .prevent:阻止預設事件。使用該修飾符可以阻止元素的預設行為。

3. .capture:使用事件捕獲模式。預設情況下,事件是在冒泡階段處理的,使用該修飾符可以將事件處理移動到捕獲階段。

4. .self:只在事件目標自身觸發時觸發事件處理程式。如果事件發生在目標元素本身而不是子元素上,則觸發事件處理程式。

5. .once:只觸發一次事件處理程式。使用該修飾符可以確保事件只被處理一次。

6. .passive:指示事件處理程式不會調用preventDefault()。使用該修飾符可以提高滾動性能。

7. .native:監聽組件根元素的原生事件。使用該修飾符可以監聽組件根元素上的原生事件。

8. .keyCode:只在特定按鍵被按下時觸發事件處理程式。使用該修飾符可以指定只有在特定按鍵被按下時才觸發事件處理程式。

9. .key:只在特定按鍵被按下時觸發事件處理程式。與.keyCode類似,但可以使用鍵盤別名而不是鍵碼。

10. .stopPropagation:阻止事件繼續傳播。與.stop類似,但不會阻止其他事件處理程式被調用。

11. .preventDefault:阻止預設事件。與.prevent類似,但不會阻止事件傳播。

12. .sync:實現雙向數據綁定。使用該修飾符可以將父組件的屬性與子組件的屬性進行雙向綁定。

這些事件修飾符可以通過在事件後面添加.和修飾符名稱來使用,例如@click.stop表示阻止事件冒泡。

.stop

在Vue中,.stop是一個事件修飾符,用於停止事件的傳播。它可以用於任何支持事件的元素上,比如按鈕、鏈接等。

下麵是一個使用.stop的案例,代碼如下:

<template>
  <div @click="outerClick">
    <button @click.stop="innerClick">內部按鈕</button>
  </div>
</template>

<script>
export default {
  methods: {
    outerClick() {
      console.log("外部點擊事件");
    },
    innerClick() {
      console.log("內部點擊事件");
    }
  }
}
</script>

在上面的代碼中,我們有一個包含按鈕的div元素。當點擊按鈕時,會觸發內部按鈕的點擊事件,並輸出"內部點擊事件"。同時,由於使用了.stop修飾符,外部div元素的點擊事件不會被觸發。

如果沒有使用.stop修飾符,當點擊按鈕時,會先觸發內部按鈕的點擊事件,然後再觸發外部div元素的點擊事件,輸出"內部點擊事件"和"外部點擊事件"。

.stop修飾符的作用是停止事件的傳播,阻止事件從子元素向父元素傳播。它可以用於任何支持事件的元素上,通過在事件名後面加上.stop即可生效。

.prevent

在Vue中,.prevent是一個事件修飾符,用於阻止事件的預設行為。它可以用於任何支持事件的元素上,比如按鈕、鏈接等。

下麵是一個使用.prevent的案例,代碼如下:

<template>
  <div>
    <button @click.prevent="submitForm">提交</button>
  </div>
</template>

<script>
export default {
  methods: {
    submitForm() {
      // 執行表單提交邏輯
      console.log("表單已提交");
    }
  }
}
</script>

在上面的代碼中,我們有一個按鈕,當點擊按鈕時,會執行submitForm方法。使用.prevent修飾符可以阻止按鈕的預設行為,即阻止表單的提交。

當我們點擊按鈕時,控制台會輸出"表單已提交",但是頁面不會刷新或跳轉,因為.prevent修飾符阻止了按鈕的預設行為。

.prevent修飾符的作用是阻止事件的預設行為,比如表單的提交、鏈接的跳轉等。它可以用於任何支持事件的元素上,通過在事件名後面加上.prevent即可生效。

.capture

在Vue中,.capture是一個事件修飾符,用於在事件處理期間使用事件捕獲模式。它可以用於任何支持事件的元素上,比如按鈕、鏈接等。

下麵是一個使用.capture的案例,代碼如下:

<template>
  <div @click.capture="outerClick">
    <button @click="innerClick">內部按鈕</button>
  </div>
</template>

<script>
export default {
  methods: {
    outerClick() {
      console.log("外部點擊事件");
    },
    innerClick() {
      console.log("內部點擊事件");
    }
  }
}
</script>

在上面的代碼中,我們有一個包含按鈕的div元素。當點擊按鈕時,會先觸發外部div元素的點擊事件,輸出"外部點擊事件",然後再觸發內部按鈕的點擊事件,輸出"內部點擊事件"。

如果沒有使用.capture修飾符,當點擊按鈕時,會先觸發內部按鈕的點擊事件,輸出"內部點擊事件",然後再觸發外部div元素的點擊事件,輸出"外部點擊事件"。

.capture修飾符的作用是在事件處理期間使用事件捕獲模式,即從父元素向子元素傳播事件。它可以用於任何支持事件的元素上,通過在事件名前面加上.capture即可生效。

.self

在Vue中,.self是一個事件修飾符,用於限制事件只能在觸發事件的元素自身上觸發,而不是在其子元素上觸發。它可以用於任何支持事件的元素上,比如按鈕、鏈接等。

下麵是一個使用.self的案例,代碼如下:

<template>
  <div @click.self="outerClick">
    <button @click="innerClick">內部按鈕</button>
  </div>
</template>

<script>
export default {
  methods: {
    outerClick() {
      console.log("外部點擊事件");
    },
    innerClick() {
      console.log("內部點擊事件");
    }
  }
}
</script>

在上面的代碼中,我們有一個包含按鈕的div元素。當點擊按鈕時,不會觸發外部div元素的點擊事件,只會觸發內部按鈕的點擊事件,並輸出"內部點擊事件"。

如果沒有使用.self修飾符,當點擊按鈕時,會先觸發內部按鈕的點擊事件,輸出"內部點擊事件",然後再觸發外部div元素的點擊事件,輸出"外部點擊事件"。

.self修飾符的作用是限制事件只能在觸發事件的元素自身上觸發,而不是在其子元素上觸發。它可以用於任何支持事件的元素上,通過在事件名後面加上.self即可生效。

.once

在Vue中,.once是一個事件修飾符,用於指定事件只能觸發一次。它可以用於任何支持事件的元素上,比如按鈕、鏈接等。

下麵是一個使用.once的案例,代碼如下:

<template>
  <div>
    <button @click.once="clickHandler">點擊一次</button>
  </div>
</template>

<script>
export default {
  methods: {
    clickHandler() {
      console.log("按鈕被點擊了");
    }
  }
}
</script>

在上面的代碼中,我們有一個按鈕,當點擊按鈕時,會執行clickHandler方法,並輸出"按鈕被點擊了"。使用.once修飾符可以確保該事件只能觸發一次。

當我們點擊按鈕時,控制台會輸出"按鈕被點擊了",但是再次點擊按鈕時,不會再觸發clickHandler方法。

.once修飾符的作用是指定事件只能觸發一次。它可以用於任何支持事件的元素上,通過在事件名後面加上.once即可生效。這對於需要確保事件只執行一次的場景非常有用。

.passive

在Vue中,.passive是一個事件修飾符,用於指定事件監聽器是被動的,即不會調用preventDefault()。它可以用於任何支持事件的元素上,比如按鈕、鏈接等。

下麵是一個使用.passive的案例,代碼如下:

<template>
  <div>
    <a href="#" @click.passive="clickHandler">點擊鏈接</a>
  </div>
</template>

<script>
export default {
  methods: {
    clickHandler(event) {
      event.preventDefault();
      console.log("鏈接被點擊了");
    }
  }
}
</script>

在上面的代碼中,我們有一個鏈接,當點擊鏈接時,會執行clickHandler方法,並輸出"鏈接被點擊了"。使用.passive修飾符可以確保事件監聽器是被動的,不會調用preventDefault()。

在clickHandler方法中,我們調用了event.preventDefault()來阻止鏈接的預設行為,即不會跳轉到指定的URL。

.passive修飾符的作用是指定事件監聽器是被動的,不會調用preventDefault()。它可以用於任何支持事件的元素上,通過在事件名後面加上.passive即可生效。這對於需要在事件監聽器中阻止預設行為的場景非常有用。

.naive

在Vue中,.native是一個修飾符,用於監聽組件根元素的原生事件。它只能用於組件上,而不能用於普通的HTML元素。

下麵是一個使用.native的案例,代碼如下:

<template>
  <my-component @click.native="clickHandler"></my-component>
</template>

<script>
export default {
  methods: {
    clickHandler() {
      console.log("組件根元素被點擊了");
    }
  }
}
</script>

在上面的代碼中,我們有一個自定義組件my-component,併在該組件上使用了.native修飾符來監聽組件根元素的點擊事件。當組件根元素被點擊時,會執行clickHandler方法,並輸出"組件根元素被點擊了"。

.native修飾符的作用是監聽組件根元素的原生事件。由於組件的根元素可能是一個自定義的HTML元素,而不是原生的HTML元素,所以預設情況下Vue會將組件上的事件綁定到組件根元素的自定義事件上。但是使用.native修飾符可以綁定到組件根元素的原生事件上。

需要註意的是,.native修飾符只能用於組件上,而不能用於普通的HTML元素。

.keyCode

在Vue中,.keyCode是一個修飾符,用於監聽鍵盤事件的特定按鍵。它可以用於任何支持鍵盤事件的元素上,比如輸入框、文本區域等。

下麵是一個使用.keyCode的案例,代碼如下:

<template>
  <div>
    <input type="text" @keydown.enter="enterKeyHandler">
  </div>
</template>

<script>
export default {
  methods: {
    enterKeyHandler(event) {
      console.log("按下了Enter鍵");
    }
  }
}
</script>

在上面的代碼中,我們有一個輸入框,當按下Enter鍵時,會執行enterKeyHandler方法,並輸出"按下了Enter鍵"。使用.keycode修飾符可以監聽特定的按鍵。

在enterKeyHandler方法中,我們通過event對象來獲取按下的鍵的keyCode。在這個例子中,我們使用了.enter修飾符來監聽Enter鍵的按下事件。

.keyCode修飾符的作用是監聽鍵盤事件的特定按鍵。它可以用於任何支持鍵盤事件的元素上,通過在事件名後面加上.keyCode即可指定要監聽的按鍵。這對於需要根據按鍵來執行不同的操作的場景非常有用。

.key

在Vue中,.key是一個修飾符,用於監聽鍵盤事件的特定按鍵。它可以用於任何支持鍵盤事件的元素上,比如輸入框、文本區域等。

下麵是一個使用.key的案例,代碼如下:

<template>
  <div>
    <input type="text" @keydown="keyHandler">
  </div>
</template>

<script>
export default {
  methods: {
    keyHandler(event) {
      if (event.key === 'Enter') {
        console.log("按下了Enter鍵");
      } else if (event.key === 'Escape') {
        console.log("按下了Escape鍵");
      }
    }
  }
}
</script>

在上面的代碼中,我們有一個輸入框,當按下鍵盤上的某個鍵時,會執行keyHandler方法,並根據按下的鍵來輸出相應的信息。使用.key修飾符可以監聽特定的按鍵。

在keyHandler方法中,我們通過event對象來獲取按下的鍵的key屬性。在這個例子中,我們根據按下的鍵是Enter還是Escape來輸出不同的信息。

.key修飾符的作用是監聽鍵盤事件的特定按鍵。它可以用於任何支持鍵盤事件的元素上,通過在事件名後面加上.key即可指定要監聽的按鍵。這對於需要根據按鍵來執行不同的操作的場景非常有用。

.stopPropagation

在Vue中,.stopPropagation是一個事件修飾符,用於阻止事件冒泡。它可以用於任何支持事件的元素上,比如按鈕、鏈接等。

下麵是一個使用.stopPropagation的案例,代碼如下:

<template>
  <div @click="outerClickHandler">
    <button @click.stop="innerClickHandler">點擊按鈕</button>
  </div>
</template>

<script>
export default {
  methods: {
    outerClickHandler() {
      console.log("外層div被點擊了");
    },
    innerClickHandler(event) {
      event.stopPropagation();
      console.log("內層按鈕被點擊了");
    }
  }
}
</script>

在上面的代碼中,我們有一個外層div和一個內層按鈕。當點擊按鈕時,會執行innerClickHandler方法,並輸出"內層按鈕被點擊了"。同時,由於使用了.stopPropagation修飾符,事件不會繼續向外層div冒泡,所以不會執行outerClickHandler方法。

在innerClickHandler方法中,我們調用了event.stopPropagation()來阻止事件冒泡。這意味著點擊按鈕時,只會執行按鈕自身的事件處理邏輯,而不會觸發外層div的點擊事件。

.stopPropagation修飾符的作用是阻止事件冒泡。它可以用於任何支持事件的元素上,通過在事件名後面加上.stopPropagation即可生效。這對於需要阻止事件冒泡的場景非常有用,可以避免事件在DOM樹中向上傳播。

.preventDefault

在Vue中,.preventDefault是一個事件修飾符,用於阻止事件的預設行為。它可以用於任何支持事件的元素上,比如表單提交、鏈接點擊等。

下麵是一個使用.preventDefault的案例,代碼如下:

<template>
  <form @submit.prevent="submitHandler">
    <input type="text">
    <button type="submit">提交</button>
  </form>
</template>

<script>
export default {
  methods: {
    submitHandler() {
      console.log("表單提交");
    }
  }
}
</script>

在上面的代碼中,我們有一個表單,當點擊提交按鈕時,會執行submitHandler方法,並輸出"表單提交"。同時,由於使用了.preventDefault修飾符,事件不會觸發表單的預設提交行為,即頁面不會刷新。

在submitHandler方法中,我們可以執行自定義的表單提交邏輯,而不受預設的表單提交行為影響。

.preventDefault修飾符的作用是阻止事件的預設行為。它可以用於任何支持事件的元素上,通過在事件名後面加上.preventDefault即可生效。這對於需要阻止事件的預設行為的場景非常有用,可以自定義事件的處理邏輯,而不受預設行為的干擾。

.sync

在Vue中,.sync是一個修飾符,用於實現父子組件之間的雙向數據綁定。它可以用於任何支持數據綁定的元素或組件上。

下麵是一個使用.sync的案例,代碼如下:

<template>
  <div>
    <input type="text" :value="message" @input="updateMessage">
    <button @click="resetMessage">重置</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    }
  },
  methods: {
    updateMessage(event) {
      this.message = event.target.value;
    },
    resetMessage() {
      this.message = '';
    }
  }
}
</script>

在上面的代碼中,我們有一個輸入框和一個重置按鈕。輸入框的值通過:value綁定到message屬性上,同時監聽輸入事件(@input)來更新message的值。重置按鈕點擊時,會將message的值重置為空字元串。

在黑夜裡夢想著光,心中覆蓋悲傷,在悲傷里忍受孤獨,空守一絲溫暖。 我的淚水是無底深海,對你的愛已無言,相信無盡的力量,那是真愛永在。 我的信仰是無底深海,澎湃著心中火焰,燃燒無盡的力量,那是忠誠永在。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 學習數字信號處理演算法時整理的學習筆記。本篇介紹 ISB 獨立邊帶調幅信號的調製與解調,內附全套 MATLAB 代碼。 ...
  • **WPF 實現 Message 消息提醒控制項** > 控 件:Message > > 作 者:WPFDevelopersOrg - **驚鏵** > >[原文鏈接](https://github.com/WPFDevelopersOrg/WPFDevelopers "原文鏈接"):https:// ...
  • 作用 程式設計過程中,我們經常需要增加一些動態效果,以此改善用戶的使用體驗。本文將介紹一種方法,動態顯示按鈕狀態,使其得到滑鼠焦點後自動放大,失去滑鼠焦點後自動縮小。 效果圖 先放一張原圖(滑鼠還未移動到按鈕上): 獲得滑鼠焦點的Button按鈕:(這裡因為是圖片,放大不明顯,所以筆者將按鈕字體也一 ...
  • **背景** 前段時間小編開發了一個控制台程式,把資料庫中的數據取出來按照編碼名稱分別存儲文件,存儲文件之前檢查是否存在當前文件,如果存在刪除。開始小批量的數據還挺順利的,當批量執行問題就來了,每次執行到一半時,創建的文件不增加反而變少了,經過日誌捕捉才發現是欄位里包含特殊符號惹的禍。小編是按照欄位 ...
  • TreeView無法綁定SelectedItem,而又想知道treeview的selecteditem的變化,當然目前有很多方法,我這裡簡單的提供一個。 目前主要思路就是通過處理xaml的TreeViewItem的IsSelected屬性來進行綁定。 <TreeView BorderThicknes ...
  • 因為筆者有著大量運維部署站點的需求,所以之前一直在陸陸續續學習並實踐各種`Linux`的`Shell`命令,在此記錄一些高頻命令的使用的說明,方便自己回顧加深記憶 ...
  • 本文主要介紹常用的存儲類型及它們之間的對比差異,輔助幫助大家在不同需求和場景下選擇合適的存儲類型。 近期,AIGC、GPT大模型、數據中台等熱點話題備受關註,那麼具體在不同的行業場景下,如何選擇對應的存儲介質呢?選型的時候該考慮哪些因素呢? 通過本文主要介紹常用的存儲類型及它們之間的對比差異,輔助幫 ...
  • 原文地址:https://blog.csdn.net/zhanglei5415/article/details/131434931 ## 一、問題 當對含有中文的url字元串,進行NSURL對象包裝時,是不能被識別的。 不會得到期望的NSURL對象,而是返回一個nil 值 ; ```objectiv ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...