目錄
方法與事件處理器
方法處理器
內聯語句處理器
事件修飾符
按鍵修飾符
為什麼在HTML 中監聽事件?
首頁 web前端 js教程 Vue 方法與事件處理的問題

Vue 方法與事件處理的問題

Oct 24, 2017 am 10:54 AM
事件 處理 問題

方法與事件處理器

方法處理器

可以用 v-on 指令監聽DOM 事件:

<p id="example">
  <button v-on:click="greet">Greet</button>
</p>
登入後複製

我們綁定了一個點選事件處理器到一個方法 greet。下面在Vue 實例中定義這個方法:

var vm = new Vue({
  el: &#39;#example&#39;,
  data: {
    name: &#39;Vue.js&#39;
  },
  // 在 `methods` 对象中定义方法
  methods: {
    greet: function (event) {
      // 方法内 `this` 指向 vm
      alert(&#39;Hello &#39; + this.name + &#39;!&#39;)
      // `event` 是原生 DOM 事件
      alert(event.target.tagName)
    }
  }
})

// 也可以在 JavaScript 代码中调用方法
vm.greet() // -> &#39;Hello Vue.js!&#39;
登入後複製

內聯語句處理器

除了直接綁定到一個方法,也可以用內聯JavaScript 語句:

<p id="example-2">
  <button v-on:click="say(&#39;hi&#39;)">Say Hi</button>
  <button v-on:click="say(&#39;what&#39;)">Say What</button>
</p>

new Vue({
  el: &#39;#example-2&#39;,
  methods: {
    say: function (msg) {
      alert(msg)
    }
  }
}
登入後複製

類似於內聯表達式,事件處理器限制為一個語句。

有時也需要在內嵌語句處理器中存取原生 DOM 事件。可以用特殊變數 $event 把它傳入方法:

<button v-on:click="say(&#39;hello!&#39;, $event)">Submit</button>
登入後複製
// ...
methods: {
  say: function (msg, event) {
    // 现在我们可以访问原生事件对象
    event.preventDefault()
  }
}
登入後複製

事件修飾符

在事件處理器中經常需要呼叫 event.preventDefault()  或 event.stopPropagation()。儘管我們在方法內可以輕鬆做到,但讓方法是純粹的資料邏輯而不處理 DOM 事件細節會更好。

為了解決這個問題,Vue.js 為 v-on 提供兩個 事件修飾符:.prevent 與 .stop。你是否還記得修飾符是點號打頭的指令後綴?

<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>

<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat">

<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
登入後複製

1.0.16 新增了兩個額外的修飾符:

<!-- 添加事件侦听器时使用 capture 模式 -->
<p v-on:click.capture="doThis">...</p>

<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<p v-on:click.self="doThat">...</p>
登入後複製

按鍵修飾符

在監聽鍵盤事件時,我們經常需要偵測 keyCode。 Vue.js 允許為 v-on 添加按鍵修飾符:

<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">
登入後複製

記住所有的keyCode 比較困難,Vue.js 為最常用的按鍵提供別名:

<!-- 同上 -->
<input v-on:keyup.enter="submit">

<!-- 缩写语法 -->
<input @keyup.enter="submit">
登入後複製

全部的按鍵別名:

enter
tab
delete
esc
space
up
down
left
right
登入後複製

1.0.8+: 支援單一字母按鍵別名。

1.0.17+: 可以自訂按鍵別名:

// 可以使用 @keyup.f1
Vue.directive(&#39;on&#39;).keyCodes.f1 = 112
登入後複製

為什麼在HTML 中監聽事件?

你可能注意到這種事件監聽的方式違背了傳統理念「separation of concern」。不必擔心,因為所有的 Vue.js 事件處理方法和表達式都嚴格綁定在目前視圖的 ViewModel 上,它不會導致任何維護困難。實際上,使用 v-on 有幾個好處:

  1. #檢視 HTML 模板就能輕鬆定位在 JavaScript 程式碼對應的方法。

  2. 因為你無須在 JavaScript 裡手動綁定事件,你的 ViewModel 程式碼可以是非常純粹的邏輯,和 DOM 完全解耦,更容易測試。

  3. 當一個 ViewModel 被銷毀時,所有的事件處理器都會自動被刪除。你無須擔心如何自己清理它們。

#

以上是Vue 方法與事件處理的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

WIN10服務主機太佔cpu的處理操作過程 WIN10服務主機太佔cpu的處理操作過程 Mar 27, 2024 pm 02:41 PM

1.首先我們右鍵點選任務列空白處,選擇【任務管理器】選項,或右鍵開始徽標,然後再選擇【任務管理器】選項。 2.在開啟的任務管理器介面,我們點選最右邊的【服務】選項卡。 3.在開啟的【服務】選項卡,點選下方的【開啟服務】選項。 4.在開啟的【服務】窗口,右鍵點選【InternetConnectionSharing(ICS)】服務,然後選擇【屬性】選項。 5.在開啟的屬性窗口,將【開啟方式】修改為【禁用】,點選【應用程式】後點選【確定】。 6.點選開始徽標,然後點選關機按鈕,選擇【重啟】,完成電腦重啟就行了。

學習PHP中如何處理特殊字元轉換單引號 學習PHP中如何處理特殊字元轉換單引號 Mar 27, 2024 pm 12:39 PM

在PHP開發過程中,處理特殊字元是常見的問題,尤其是在字串處理中經常會遇到特殊字元轉義的情況。其中,將特殊字元轉換單引號是比較常見的需求,因為在PHP中,單引號是一種常用的字串包裹方式。在本文中,我們將介紹如何在PHP中處理特殊字元轉換單引號,並提供具體的程式碼範例。在PHP中,特殊字元包括但不限於單引號(')、雙引號(")、反斜線()等。在字串

解決jQuery無法取得表單元素值的方法 解決jQuery無法取得表單元素值的方法 Feb 19, 2024 pm 02:01 PM

解決jQuery.val()無法使用的問題,需要具體程式碼範例對於前端開發者,使用jQuery是常見的操作之一。其中,使用.val()方法來取得或設定表單元素的值是非常常見的操作。然而,在一些特定的情況下,可能會出現無法使用.val()方法的問題。本文將介紹一些常見的情況以及解決方案,並提供具體的程式碼範例。問題描述在使用jQuery開發前端頁面時,有時候會碰

jQuery中如何實作select元素的改變事件綁定 jQuery中如何實作select元素的改變事件綁定 Feb 23, 2024 pm 01:12 PM

jQuery是一個受歡迎的JavaScript函式庫,可以用來簡化DOM操作、事件處理、動畫效果等。在web開發中,常常會遇到需要對select元素進行改變事件綁定的情況。本文將介紹如何使用jQuery實作對select元素改變事件的綁定,並提供具體的程式碼範例。首先,我們需要使用標籤來建立一個包含選項的下拉式選單:

如龍8酒類大師考試問題有哪些 如龍8酒類大師考試問題有哪些 Feb 02, 2024 am 10:18 AM

如龍8酒類大師考試所涉及的問題包括哪些?對應的答案是什麼?如何快速通過考試?酒類大師考試活動有許多需要回答的問題,我們可以參考答案來解決。這些問題都牽涉到酒的知識。如果需要參考,讓我們一起來看看如龍8酒類大師考試問題答案的詳細解析!如龍8酒類大師考試問題答案詳解1、關於「酒」的問題。這是一種管由王室建立的蒸餾灑廠生產的蒸餾酒,以夏威夷大量種植的甘盤的糖分為原料釀製。請問這種酒叫什麼?答:蘭姆酒2、關於「酒」的問題。圖片上是一種使用乾琴灑和乾苦艾酒調配而成的酒。它的特點是加入了橄欖,被譽為「雞尼酒

如何解決win11安裝後無法使用的開始功能表問題 如何解決win11安裝後無法使用的開始功能表問題 Jan 06, 2024 pm 05:14 PM

不少用戶都嘗試更新了win11系統,結果發現更新完後開始選單無法使用了,這可能是因為最新的更新出現了問題,我們可以等待微軟修復或卸載這些更新來解決,下面就一起來看一下解決方法吧。 win11安裝後開始功能表無法使用怎麼辦方法一:1、先在win11中開啟控制面板。 2、然後點選程式下方的「卸載程式」按鈕。 3.進入卸載介面,在左上角找到「查看已安裝的更新」4、進入之後在更新資訊中可以查看更新時間,將最近的更新全部卸載即可。方法二:1、此外,我們還可以直接下載不含更新的win11系統。 2、這是一款沒有最

物華彌新破局測試常見問題:2月28日,我們期待您的到來! 物華彌新破局測試常見問題:2月28日,我們期待您的到來! Feb 26, 2024 pm 05:22 PM

物華彌新已確定將於2月28日進行破局測試,本次主要為大家解決破局測試的常見問題,包括曾經參與過之前的測試這次有資格嗎、測試的開啟和結束、預下載時間、支援哪些設備平台等內容,一起來看看吧。物華彌新破局測試常見問題:2月28日,我們期待您的到來! 1.「破局測試」的性質為?本次測試為安卓限量計費刪除測試,測試結束後,本次測試的遊戲資料將被刪除。 2、曾經參與過「開局測試」或「入局測試」,這次擁有參與「破局測試]的資格嗎?如您曾參與過「開局測試」、「入局測試」,請掃描下方二維碼前往「致曾參與內測玩家

PHP 字串處理:如何去除右側第一個字元? PHP 字串處理:如何去除右側第一個字元? Mar 01, 2024 pm 12:51 PM

在PHP中處理字串是非常常見的操作,而去除右側第一個字元也是常見需求。在本文中,我將向您展示如何使用PHP程式碼實現去除右側第一個字元的功能。首先,讓我們來看一個簡單的字串處理函數範例,示範如何去除右側第一個字元:

See all articles