聊聊Vue的事件監聽指令v-on
在前端開發中,我們需要經常和使用者交互,這個時候,我們就必須監聽使用者發生的時間,例如點擊、拖曳、鍵盤事件等等在Vue中如何監聽事件呢?使用v-on
指令。以下這篇文章就來帶大家了解Vue的事件監聽指令v-on,希望對大家有幫助!
v-on指令介紹
- ##v-on指令介紹
- ## 作用:綁定事件監聽器
- 縮寫:@
- #預期:Function (方法) | Inline Statement(內部表達式) |Object(物件)
在Vue中綁定事件監聽器,事件類型由參數指定;表達式可以是一個方法的名字或一個內嵌語句,如果沒有修飾符也可以省略。 (學習影片分享:
vue影片教學
v2.4.0
開始v-on同樣支援不帶參數綁定一個事件/監聽器鍵值對的對象。注意當使用物件語法時,是不支援任何修飾器的。 用在普通元素上時,只能監聽 原生DOM事件。用在自訂元素元件上時,也可以監聽子元件觸發的自訂事件。 在監聽原生DOM事件時,方法以事件為唯一的參數。如果使用內聯語句,語句可以存取一個$event屬性:v-on:click="handle('ok', $event)"。先來看一個簡單的範例
<!-- Template --> <div id="app"> <h1 id="点击我">点击我</h1> </div> // JavaScript var app = new Vue({ el: '#app', methods: { clickMe: function() { alert("点击我,我就出来了!(^_^)") } }, data: { } })
看到的效果如下:在Vue的範本中,我們使用了
v-on,並且綁定了一個
click事件(
v-on:click),然後給這個
click事件綁定了一個事件
clickMe。而這個
clickMe在Vue中,我們一般是放在
methods: {}
clickMe這個函數寫在
methods中。
看到
v-on:click="clickMe",是不是很像HTML中的
onclock="clickMe"
@click來取代
v-on:click
在Vue中,對於
v-on
<!-- 方法处理器 --> <button v-on:click="clickMe"></button> <!-- 对象语法 (v2.4.0版本以上才支持) --> <button v-on="{ mousedown: doThis, mouseup: doThat}"></button> <!-- 内联语句 --> <button v-on:click="doThat('Hello', $event)"></button> <!-- 缩写 --> <button @click="doThis"></button> <!-- 停止冒泡 --> <button @click.stop="doThis"></button> <!-- 阻止默认行为 --> <button @click.prevent="doThis"></button> <!-- 阻止默认行为, 没有表达式 --> <form @submit.prevent></form> <!-- 串联修饰符 --> <button @click.stop.prevent="doThis"></button> <!-- 键修饰符, 键别名 --> <input @keyup.13="onEnter" /> <!-- 点击回调只会触发一次 --> <button v-on:click.once="doThis"></button>
- my-event
- 時將呼叫事件處理器):
<my-component @my-event="handleThis"></my-component> <!-- 内联语句 --> <my-component @my-event="handleThis(123, $event)"></my-component> <!-- 组件中的原生事件 --> <my-component @click.native="onClick"></my-component>
登入後複製從上面的簡單範例中,可以看出Vue在事件處理的過程中自帶了一些修飾符:
.stop
:呼叫event.stopPropagation()
. prevent
:呼叫event.preventDefault()
.capture
:新增事件偵聽器時使用capture模式
.self
:只當事件是從偵聽器綁定的元素本身觸發時才觸發回呼
.{keyCode | keyAlias }
:只當事件是從特定鍵觸發時才觸發回呼
#.native
:監聽元件根元素的原生事件
.once
:只觸發一次回呼
#.left
:只當點擊滑鼠左鍵時觸發, (v2.2.0 才有)
.right
:只當點擊滑鼠右鍵時觸發,(v2.2.0 才有)
#.middle
:只當點擊滑鼠中鍵時觸發,(v2.2.0 才有)
.passive
{passive: true}
模式加入偵聽器,(v2.3.0 才具有)元件自訂事件
v-on範例
我們來做一個簡單的效果,就是一個計數器,效果如下:
數字往下加,點選###-###數字往下減。 ######在Vue中,我們的模板中有三個元素,兩個按鈕,一個顯示數字的容器,第一個按鈕做加的計算,第二個按鈕做減的計數。簡單的結構如下圖所示:###
<div id="app"> <button v-on:click="increase">+</button> <span>{{ count }}</span> <button v-on:click="reduce">-</button> </div>
两个按钮上都绑定了一个click
事件,点击按钮分别触发increase
和reduce
两个函数,前者做加法,后者做减法。另外一个元素中我们有一个值{{ count }}
。每次点击按钮这个{{ count }}
都会做相应的变化。
模板有了之后,需要添加对应的功能。
let app = new Vue({ el: '#app', methods: { increase: function() { this.count++ }, reduce: function() { this.count-- } }, data: { count: 0 } })
在Vue中,我们在methods
中声明了两个函数,分别是increase
(加法)和reduce
(减法)。另外需要在数据源中声明count
。
演示demo地址:https://codepen.io/airen/pen/PJbKNg
对于这么简单的效果,我们也可以直接在v-on中处理完:
<button v-on:click="count += 1">+</button>
比如我们前面的示例,修改下:
<button v-on:click="count += 1">+</button> {{ count }}// JavaScript let app = new Vue({ el: '#app', data: { count: 0 } })
效果一样:
演示demo地址:https://codepen.io/airen/pen/veyeLY
以上是聊聊Vue的事件監聽指令v-on的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 <script> 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 <router-link to="/"> 組件window.history.back(),方法選擇取決於場景。

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

可以通過以下方法查詢 Vue 版本:使用 Vue Devtools 在瀏覽器的控制台中查看“Vue”選項卡。使用 npm 運行“npm list -g vue”命令。在 package.json 文件的“dependencies”對像中查找 Vue 項。對於 Vue CLI 項目,運行“vue --version”命令。檢查 HTML 文件中引用 Vue 文件的 <script> 標籤中的版本信息。

Vue 中的函數截流是一種技術,用於限制函數在指定時間段內被調用的次數,防止性能問題。實現方法為:導入 lodash 庫:import { debounce } from 'lodash';使用 debounce 函數創建截流函數:const debouncedFunction = debounce(() => { / 邏輯 / }, 500);調用截流函數,控制函數在 500 毫秒內最多被調用一次。
