Vue初體驗(四),關於事件v-on

事件是每個框架都繞不過去的話題,實現的方式各有千秋,而Vue中,我們使用v-on的指令來進行事件監聽。
1、使用v-on監聽事件。示例代碼如下:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>Vue學習</title>
        <script src="https://unpkg.com/vue/dist/vue.js"></script>
    </head>
    <style>
        .style{
            color: red
        }
    </style>
    <body>
        <div id="app">
            <button v-on:click="message+=1">click</button>
            <p>被點擊了{{message}}</p>

        </div>

        <script>
            new Vue({
                el: '#app',
                data: {
                    message: 0
                }
            })
        </script>
    </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

2、正常情況下,事件應該寫在函數中,而我們需要在Vue這個對象的參數中配置methods屬性,裏面就是相應的一些方法,這個方法通過this能訪問數據。代碼如下:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>Vue學習</title>
        <script src="https://unpkg.com/vue/dist/vue.js"></script>
    </head>
    <style>
        .style{
            color: red
        }
    </style>
    <body>
        <div id="app">
            <button v-on:click="clicks">click</button>

        </div>

        <script>
            new Vue({
                el: '#app',
                data: {
                    message: 0
                },
                methods: {
                    clicks: function(){
                        alert("發生點擊事件了")
                    }
                }
            })
        </script>
    </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

3、關於事件修飾符。
在Vue中,我們不得不牽扯一些dom相關的東西,比如阻止默認行爲,阻止事件冒泡等等,但是正常情況下,我們應該着手處理的是數據邏輯,而不是和dom相關的東西,儘管我們確實能在事件中處理。(這裏應該這麼理解,MVC思想中,和dom相關的處理儘可能的隔離出去,我們應該專注於數據和邏輯),這就是事件修飾符的存在意義。通過由點(.)表示的指令後綴來調用修飾符。
.stop
.prevent
.capture
.self
.once

<!-- 阻止單擊事件冒泡 -->
<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>
<!-- 只當事件在該元素本身(而不是子元素)觸發時觸發回調 -->
<div v-on:click.self="doThat">...</div>
<!-- 點擊事件將只會觸發一次 -->
<a v-on:click.once="doThis"></a>
<!-- 只有在 keyCode 是 13 時調用 vm.submit() -->
<input v-on:keyup.13="submit">
<!-- 同上 -->
<input v-on:keyup.enter="submit">
<!-- 縮寫語法 -->
<input @keyup.enter="submit">
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

可以用如下修飾符開啓鼠標或鍵盤事件監聽,使在按鍵按下時發生響應。
.ctrl
.alt
.shift
.meta

<!-- Alt + C -->
<input @keyup.alt.67="clear">
<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>
  • 1
  • 2
  • 3
  • 4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章