1. 程式人生 > >【Vue.js學習筆記】4:事件修飾符,鍵盤事件,鍵值修飾符

【Vue.js學習筆記】4:事件修飾符,鍵盤事件,鍵值修飾符

事件修飾符

Vue的官方文件中給出了引入v-on:的事件修飾符的理念是,不希望在方法中去處理DOM細節。

事件冒泡

事件在事件源上發生,處理事件的方法並未繫結在該事件源上,事件就要向外或者向內傳播(propagation),也稱事件冒泡。在JS裡,可以用事件物件的stopPropagation()方法來阻止事件的進一步傳播。

index.html

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml" xmlns:>
<head>
    <
meta
charset="UTF-8">
<title>Vue.js</title> <link rel="stylesheet" href="style.css"> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <!--這個vue-app是根容器--> <div id="vue-app"> <h3>事件只允許被觸發一次</h3>
<button @click.once="add()">漲一歲</button> <p>年齡是{{age}}</p> <h3>讓a標籤點了不跳轉</h3> <a v-on:click.prevent="alert()" href="http://www.baidu.com">百度</a> <h3>用stopPropagation阻止事件冒泡</h3> <div class="canvas" v-on:mousemove="updateXY"
>
{{x}},{{y}} <span v-on:mousemove="stopMoving">滑鼠放在這裡xy將停止變化</span> </div> <h3>用Vue的事件修飾符.stop來阻止事件冒泡</h3> <div class="canvas" v-on:mousemove="updateXY"> {{x}},{{y}} <span v-on:mousemove.stop="">滑鼠放在這裡xy將停止變化</span> </div> </div> <script src="app2.js"></script> </body> </html>

app2.js

// 例項化vue物件
new Vue({
    el: "#vue-app",
    data: {
        age: 30,
        x: 0,
        y: 0
    },
    methods: {
        add: function (inc = 1) {
            this.age += inc;
        },
        updateXY: function (event) {//這裡event即是當事件觸發時的事件物件
            // console.log(event); //輸出檢視一下
            this.x = event.offsetX;
            this.y = event.offsetY;
        },
        stopMoving: function (event) {
            // 該方法將停止事件的傳播,阻止事件被分派到其他Document節點
            event.stopPropagation();
        },
        alert: function () {
            alert("只彈出這個alert,不跳轉到指定的url");
        }
    }
});

style.css

.canvas{
    width: 400px;
    padding: 100px 20px;
    text-align: center;
    border: 1px solid #333;
}

執行結果

在這裡插入圖片描述
在這裡插入圖片描述

鍵盤事件,鍵值修飾符

官方文件中現在叫按鍵修飾符了。

index.html

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Vue.js</title>
    <link rel="stylesheet" href="style.css">
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--這個vue-app是根容器-->
<div id="vue-app">
    <h3>鍵盤事件</h3>
    鍵盤事件,按下鍵盤按鍵時觸發:
    <input type="text" v-on:keyup="logMsg(1)">
    <br>
    鍵值修飾符,這裡是當按下回車時觸發:
    <input type="text" v-on:keyup.enter="logMsg(2)">
    <br>
    組合鍵測試,僅當按下Alt+Enter時觸發:
    <input type="text" v-on:keyup.alt.enter="logMsg(3)">
</div>
<script src="app3.js"></script>
</body>
</html>

app3.js

// 例項化vue物件
new Vue({
    el: "#vue-app",
    data: {},
    methods: {
        logMsg: function (k) {
            console.log("事件觸發了,k=" + k);
        }
    }
});

執行結果

在這裡插入圖片描述