欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue 事件處理操作實例詳解

 更新時間:2019年03月05日 11:27:33   作者:deniro_li  
這篇文章主要介紹了Vue 事件處理操作,結(jié)合實例形式較為詳細(xì)的分析了vue.js事件處理相關(guān)的事件監(jiān)聽、處理、修飾符等相關(guān)概念、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了Vue 事件處理操作。分享給大家供大家參考,具體如下:

1 監(jiān)聽事件

可以用 v-on 指令監(jiān)聽 DOM 事件,并在觸發(fā)時運(yùn)行一些 JavaScript 代碼。

html:

<div id="app1">
  <button v-on:click="counter +=1">遞增</button>
  <p>按鈕已被點(diǎn)擊 {{ counter }} 次。</p>
</div>

js:

var app1 = new Vue({
  el: "#app1",
  data: {
    counter: 0
  }
});

效果:

2 事件處理方法

然而許多事件處理邏輯會更為復(fù)雜,所以直接把 JavaScript 代碼寫在 v-on 指令中是不可行的。因此v-on還可以接收一個需要調(diào)用的方法名稱。

html:

<div id="app2">
  <button v-on:click="greet">問候</button>
</div>

js:

var app2 = new Vue({
  el: "#app2",
  data: {
    name: 'Deniro'
  },
  methods: {
    greet: function (event) {
      //這里的 this 指向的是當(dāng)前 Vue 實例
      console.log('你好 ' + this.name + '!');
      if (event) {
        console.log(event.target.tagName);
      }
    }
  }
});

效果:

也可以直接調(diào)用 Vue 實例定義的函數(shù):

3 內(nèi)聯(lián)處理器中的方法

除了直接綁定到一個方法,也可以在內(nèi)聯(lián) JavaScript 語句中調(diào)用方法:

html:

<div id="app3">
  <button v-on:click="greet('你好')">問候</button>
</div>

js:

var app3 = new Vue({
  el: "#app3",
  methods: {
    greet: function (message) {
      console.log(message);
    }
  }
});

有時也需要在內(nèi)聯(lián)語句處理器中訪問原始的 DOM 事件。可以用特殊變量 $event 把它傳入方法:

html:

<button v-on:click="warn('表單已被禁用',$event)">提交</button>

js:

methods: {
  ...
  warn: function (message,event) {
    //訪問原生對象
    if(event){
      event.preventDefault();
    }
    console.log(message);
  }
}

4 事件修飾符

在事件處理程序中調(diào)用 event.preventDefault()event.stopPropagation() 是非常常見的需求。盡管我們可以在方法中輕松實現(xiàn)這點(diǎn),但更好的方式是:方法只有純粹的數(shù)據(jù)邏輯,而不是去處理 DOM 事件細(xì)節(jié)。

為了解決這個問題,Vue.js 為 v-on 提供了事件修飾符。之前提過,修飾符是由點(diǎn)開頭的指令后綴來表示的。

  • .stop
  • .prevent
  • .capture
  • .self
  • .once
  • .passive
<!--阻止單擊事件繼續(xù)傳播-->
<a v-on:click.stop="doThis"></a>
<!--提交事件不再重載頁面-->
<form v-on:submit.prevent="onSubmit"></form>
<!--串聯(lián)修飾符-->
<a v-on:click.stop.prevent="doThat"></a>
<!--只有修飾符-->
<form v-on:submit.prevent></form>
<!--添加事件監(jiān)聽器時使用事件捕獲模式-->
<!--即元素自身觸發(fā)的事件先在此處理,然后才交由內(nèi)部元素-->
<div v-on:click.capture="doThis">...</div>
<!--在 event.target 為當(dāng)前元素自身時觸發(fā)處理函數(shù)-->
<!--即事件不是從內(nèi)部元素觸發(fā)的-->
<div v-on:click.self="doThat">...</div>

使用修飾符時,順序很重要;相應(yīng)的代碼會以同樣的順序產(chǎn)生。因此,用 v-on:click.prevent.self 會阻止所有的點(diǎn)擊,而 v-on:click.self.prevent 只會阻止對元素自身的點(diǎn)擊。
2.1.4 新增

<!--點(diǎn)擊事件只會觸發(fā)一次-->
<a v-on:click.once="doThis"></a>

不像其它只能對原生的 DOM 事件起作用的修飾符,.once 修飾符還能被用到自定義的組件事件上。

2.3.0 新增

Vue 還對應(yīng) addEventListener 中的 passive 選項提供了 .passive 修飾符。

<!--滾動事件的默認(rèn)行為將會被立即觸發(fā)(不會等待 onScroll 事件完成)-->
<!--包含 event.preventDefault() 的情況-->
<div v-on:scroll.passive="onScroll">...</div>

這個 .passive 修飾符尤其能夠提升移動端的性能。

不要把 .passive 和 .prevent 一起使用,因為 .prevent 將會被忽略,同時瀏覽器可能會向你展示一個警告。請記住,.passive 會告訴瀏覽器你不想阻止事件的默認(rèn)行為。

5 按鍵修飾符

在監(jiān)聽鍵盤事件時,我們經(jīng)常需要檢查常見的鍵值。Vue 允許為 v-on 在監(jiān)聽鍵盤事件時添加按鍵修飾符:

<!--keyCode 為 13 時調(diào)用 vm.submit()-->
<input v-on:keyup.13="submit">

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

<!--使用按鍵別名-->
<input v-on:keyup.enter="submit">
<!--使用縮寫語法-->
<input @keyup.enter="submit">

全部的按鍵別名:

  • .enter
  • .tab
  • .delete (捕獲“刪除”和“退格”鍵)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right

可以通過全局 config.keyCodes 對象自定義按鍵修飾符別名

//自定義按鍵的修飾符別名
Vue.config.keyCodes.f1 = 112;

自動匹配按鍵修飾符

2.5.0 新增

你也可直接將 KeyboardEvent.key 暴露的任意有效按鍵名轉(zhuǎn)換為 kebab-case 來作為修飾符:

<input @keyup.page-down="onPageDown">

在上面的例子中,處理函數(shù)僅在 $event.key === 'PageDown' 時被調(diào)用。

有一些按鍵 (.esc 以及所有的方向鍵) 在 IE9 中有不同的 key 值, 如果你想支持 IE9,它們的內(nèi)置別名應(yīng)該是首選。

6 系統(tǒng)修飾鍵

2.1.0 新增

可以用如下修飾符來實現(xiàn)僅在按下相應(yīng)按鍵時才觸發(fā)鼠標(biāo)或鍵盤事件的監(jiān)聽器。

  • .ctrl
  • .alt
  • .shift
  • .meta

注意:在 Mac 系統(tǒng)鍵盤上,meta 對應(yīng) command 鍵 (⌘)。在 Windows 系統(tǒng)鍵盤 meta 對應(yīng) Windows 徽標(biāo)鍵 (⊞)。在 Sun 操作系統(tǒng)鍵盤上,meta 對應(yīng)實心寶石鍵 (◆)。在其他特定鍵盤上,尤其在 MIT 和 Lisp 機(jī)器的鍵盤、以及其后繼產(chǎn)品,比如 Knight 鍵盤、space-cadet 鍵盤,meta 被標(biāo)記為“META”。在 Symbolics 鍵盤上,meta 被標(biāo)記為“META”或者“Meta”。

<!--Alt + C-->
<input @keyup.alt.67="clear">
<!--Ctrl + Click-->
<div @click.ctrl="doSomething">Do something</div>

請注意修飾鍵與常規(guī)按鍵不同,在和 keyup 事件一起用時,事件觸發(fā)時修飾鍵必須處于按下狀態(tài)。換句話說,只有在按住 ctrl 的情況下釋放其它按鍵,才能觸發(fā)keyup.ctrl。而單單釋放 ctrl 也不會觸發(fā)事件。如果你想要這樣的行為,請為 ctrl 換用 keyCode:keyup.17。

6.1 .exact 修飾符

2.5.0 新增

.exact 修飾符允許你控制由精確的系統(tǒng)修飾符組合觸發(fā)的事件。

<!--Ctrl 或 Alt 或 Shift 被一同按下時會觸發(fā)-->
<button @click.ctrl="onClick">A</button>
<!--有且只有 Ctrl 被按下時才會觸發(fā)-->
<button @click.ctrl.exact="onCtrlClick">A</button>
<!--沒有任何系統(tǒng)修飾符被按下時才會觸發(fā)-->
<button @click.exact="onClick">A</button>

6.2 鼠標(biāo)按鈕修飾符

2.2.0 新增

  • .left
  • .right
  • .middle

這些修飾符會限制處理函數(shù)僅響應(yīng)特定的鼠標(biāo)按鈕。

7 為什么在 HTML 中監(jiān)聽事件?

你可能注意到這種事件監(jiān)聽的方式違背了關(guān)注點(diǎn)分離 (separation of concern) 這個長期以來的優(yōu)良傳統(tǒng)。但不必?fù)?dān)心,因為所有的 Vue.js 事件處理方法和表達(dá)式都嚴(yán)格綁定在當(dāng)前視圖的 ViewModel 上,它不會導(dǎo)致任何維護(hù)上的困難。實際上,使用 v-on 有幾個好處:

掃一眼 HTML 模板便能輕松定位在 JavaScript 代碼里對應(yīng)的方法。

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

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

希望本文所述對大家vue.js程序設(shè)計有所幫助。

相關(guān)文章

  • Vue Element使用icon圖標(biāo)教程詳解(第三方)

    Vue Element使用icon圖標(biāo)教程詳解(第三方)

    element-ui自帶的圖標(biāo)庫不夠全,還是需要需要引入第三方icon。下面小編給大家?guī)砹薞ue Element使用icon圖標(biāo)教程,感興趣的朋友一起看看吧
    2018-02-02
  • vue實現(xiàn)登錄數(shù)據(jù)的持久化的使用示例

    vue實現(xiàn)登錄數(shù)據(jù)的持久化的使用示例

    在Vue.js中,實現(xiàn)登錄數(shù)據(jù)的持久化需要使用瀏覽器提供的本地存儲功能,Vue.js支持使用localStorage和sessionStorage來實現(xiàn)本地存儲,本文就來介紹一下如何實現(xiàn),感興趣的可以了解一下
    2023-10-10
  • vue-cli之router基本使用方法詳解

    vue-cli之router基本使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue-cli之router基本使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • vue中實現(xiàn)左右聯(lián)動的效果

    vue中實現(xiàn)左右聯(lián)動的效果

    這篇文章主要介紹了vue中實現(xiàn)左右聯(lián)動的效果,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-06-06
  • Vue ​v-model相關(guān)知識總結(jié)

    Vue ​v-model相關(guān)知識總結(jié)

    這篇文章主要介紹了Vue &#8203;v-model相關(guān)知識總結(jié),幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • 使用vue-router與v-if實現(xiàn)tab切換遇到的問題及解決方法

    使用vue-router與v-if實現(xiàn)tab切換遇到的問題及解決方法

    這篇文章主要介紹了vue-router與v-if實現(xiàn)tab切換的思考,需要的朋友可以參考下
    2018-09-09
  • el-table 行合并的實現(xiàn)示例

    el-table 行合并的實現(xiàn)示例

    本文主要介紹了el-table 行合并的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue中v-bind與v-model的區(qū)別舉例詳解

    vue中v-bind與v-model的區(qū)別舉例詳解

    這篇文章主要給大家介紹了關(guān)于vue中v-bind與v-model區(qū)別的相關(guān)資料,v-model和v-bind是Vue.js框架中的兩個常用指令,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • unix時間戳轉(zhuǎn)換的方法詳解

    unix時間戳轉(zhuǎn)換的方法詳解

    將 unix 時間戳轉(zhuǎn)換為日期時間和使用日期時間轉(zhuǎn)換為 unix 時間戳,在項目中常常用到,其中vue中的moment庫很是方便,下面小編就來為大家講講具體使用吧
    2023-09-09
  • vue實現(xiàn)圖片滑動驗證

    vue實現(xiàn)圖片滑動驗證

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)圖片滑動驗證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論