亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vue 事件處理操作實例詳解

2019-11-19 12:02:14
字體:
來源:轉載
供稿:網友

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

1 監聽事件

可以用 v-on 指令監聽 DOM 事件,并在觸發時運行一些 JavaScript 代碼。

html:

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

js:

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

效果:

2 事件處理方法

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

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 指向的是當前 Vue 實例      console.log('你好 ' + this.name + '!');      if (event) {        console.log(event.target.tagName);      }    }  }});

效果:

也可以直接調用 Vue 實例定義的函數:

3 內聯處理器中的方法

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

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);    }  }});

有時也需要在內聯語句處理器中訪問原始的 DOM 事件??梢杂锰厥庾兞?$event 把它傳入方法:

html:

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

js:

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

4 事件修飾符

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

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

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

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

<!--點擊事件只會觸發一次--><a v-on:click.once="doThis"></a>

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

2.3.0 新增

Vue 還對應 addEventListener 中的 passive 選項提供了 .passive 修飾符。

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

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

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

5 按鍵修飾符

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

<!--keyCode 為 13 時調用 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 暴露的任意有效按鍵名轉換為 kebab-case 來作為修飾符:

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

在上面的例子中,處理函數僅在 $event.key === 'PageDown' 時被調用。

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

6 系統修飾鍵

2.1.0 新增

可以用如下修飾符來實現僅在按下相應按鍵時才觸發鼠標或鍵盤事件的監聽器。

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

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

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

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

6.1 .exact 修飾符

2.5.0 新增

.exact 修飾符允許你控制由精確的系統修飾符組合觸發的事件。

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

6.2 鼠標按鈕修飾符

2.2.0 新增

  • .left
  • .right
  • .middle

這些修飾符會限制處理函數僅響應特定的鼠標按鈕。

7 為什么在 HTML 中監聽事件?

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

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

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97av在线视频免费播放| 成人免费高清完整版在线观看| 精品亚洲一区二区三区四区五区| 久久久av亚洲男天堂| 国产精品自拍网| 美女啪啪无遮挡免费久久网站| 欧美激情三级免费| 成人看片人aa| 久久久久国产精品免费网站| 国产精品久久久久久久app| 国产成人精品视频在线观看| 一区二区日韩精品| 欧美裸体xxxx极品少妇软件| 日韩69视频在线观看| 国产精品视频yy9099| 亚洲a一级视频| 久久人人爽人人爽人人片av高清| 97精品国产97久久久久久| 欧美日韩免费区域视频在线观看| 在线日韩日本国产亚洲| 久久久亚洲福利精品午夜| 国产欧美日韩精品在线观看| 日韩精品高清视频| 亚洲欧美国产制服动漫| 91精品国产综合久久香蕉922| 欧美在线视频在线播放完整版免费观看| 久久精品2019中文字幕| 国产91免费观看| 色婷婷综合久久久久| 欧美日韩亚洲高清| 久久精品一区中文字幕| 久久亚洲春色中文字幕| 成人午夜小视频| 粉嫩老牛aⅴ一区二区三区| 精品国产一区二区三区久久狼5月| 欧美理论片在线观看| 久久久久久国产三级电影| 国产不卡在线观看| 欧美成人午夜视频| 亚洲新中文字幕| 国产日产久久高清欧美一区| 欧美国产日韩中文字幕在线| 久久天天躁狠狠躁夜夜躁2014| 国产在线视频不卡| 亚洲欧美一区二区精品久久久| 欧美另类xxx| 国产精品老牛影院在线观看| 成人黄色av网| 国产97在线观看| 日韩精品www| 久久精品国产成人精品| 91香蕉嫩草影院入口| 亚洲娇小xxxx欧美娇小| 伊人伊成久久人综合网站| 欧美日韩精品二区| 乱亲女秽乱长久久久| 精品国产户外野外| 在线丨暗呦小u女国产精品| 亚洲一区二区国产| 亚洲影院污污.| 色中色综合影院手机版在线观看| 国产精品中文久久久久久久| 欧美极品在线视频| 91久久国产综合久久91精品网站| 日本高清视频精品| 精品福利免费观看| 欧美一级大片在线免费观看| 精品中文字幕在线| 欧美性猛交xxxx| 91网在线免费观看| 日韩在线观看免费av| 亚洲新中文字幕| 亚洲欧洲免费视频| 热久久99这里有精品| 欧美日韩成人在线播放| 精品久久久久久久久久久久久| 久久久久999| 亚洲国产欧美日韩精品| 国产日韩精品在线播放| 上原亚衣av一区二区三区| 91久久国产婷婷一区二区| 欧美在线xxx| 国产精品高潮呻吟久久av野狼| 欧美午夜精品久久久久久浪潮| 最近中文字幕mv在线一区二区三区四区| 亚洲美女喷白浆| 国产精品网站大全| 日韩在线观看免费网站| 成人福利网站在线观看11| 国产成人精品久久二区二区91| 91高清免费视频| 国产免费一区二区三区在线观看| 国产精品自产拍在线观看中文| 国产精品久久97| 欧美性猛交xxxxx免费看| 欧美成人自拍视频| 51视频国产精品一区二区| 免费av在线一区| 亚洲欧美制服第一页| 久久99国产精品自在自在app| 欧美做爰性生交视频| 色琪琪综合男人的天堂aⅴ视频| 午夜精品久久17c| 欧美极品少妇xxxxⅹ裸体艺术| 成人在线观看视频网站| 欧美在线观看www| 亚洲福利在线观看| 日韩麻豆第一页| 98精品国产自产在线观看| 国产精品久久久久久久久久三级| 国产精品无av码在线观看| 欧美日韩国产中字| 清纯唯美日韩制服另类| 一本色道久久综合亚洲精品小说| 两个人的视频www国产精品| 国产成+人+综合+亚洲欧洲| 欧美日韩色婷婷| 久久精品美女视频网站| 日韩av电影院| 韩剧1988免费观看全集| 国产香蕉一区二区三区在线视频| 亚洲最新av在线网站| 欧美电影院免费观看| 国产精品网站视频| 国产成人亚洲综合青青| 国产精品www色诱视频| 国产精品入口夜色视频大尺度| 亚洲免费人成在线视频观看| 国产一区二区三区在线视频| 91免费欧美精品| 亚洲桃花岛网站| 久久成人这里只有精品| 欧美日韩加勒比精品一区| 夜夜嗨av一区二区三区四区| 亚洲第一福利在线观看| 欧美大人香蕉在线| 亚洲男人天天操| 国产精品久久久久久久一区探花| 亚洲天堂精品在线| 91香蕉嫩草影院入口| 一区二区三区 在线观看视| 日韩精品在线影院| 国产免费观看久久黄| 久热99视频在线观看| 国产噜噜噜噜噜久久久久久久久| 亚洲国产成人91精品| 久久久免费在线观看| 国产精品国产福利国产秒拍| 国产精品一久久香蕉国产线看观看| 亚洲第一男人天堂| 欧美黑人狂野猛交老妇| 中文字幕一精品亚洲无线一区| 精品国产区一区二区三区在线观看| 91av成人在线| 91美女片黄在线观看游戏| 国产精品爽爽爽| 国产精品久久久久久久久久久久久久| 国产精品色婷婷视频| 国产精品久久久久影院日本| www.久久久久| 国产亚洲视频在线观看| 久青草国产97香蕉在线视频| 91社区国产高清| 国产午夜精品全部视频在线播放|