Vue語法:事件綁定

事件綁定

1.指令v-on

Vue使用v-on指令監聽DOM事件,我們可以使用v-on指令綁定到DOM節點上,例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>指令v-on</title>
</head>
<body>
<div id="app">
    <button v-on:click="logInfo()">打印消息(default:Hello World)</button><br>
    <button v-on:click="logInfo('Self Message')">打印消息('Self Message')</button><br>
    <button v-on:click="console.log('A Vue app')">打印消息('A Vue app')</button><br>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js"></script>
<script>
    new Vue({
        el:'#app',
        data(){
            return{

            }
        },
        methods:{
            logInfo(msg){
                console.log(msg || 'Hello World');
            }
        }
    });
</script>
</body>
</html>

同時v-on也可以簡寫爲@

2.獲取事件對象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>獲取事件對象</title>
</head>
<body>
<div id="app">
    <!--1.在事件函數不需要傳參市可以這樣寫-->
    <input type="text" @keyup="handleKeyUp"><br>
    <!--2.手動傳入$event對象-->
    <input type="text" @keyup="handleKeyUp($event)">
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js"></script>
<script>
    new Vue({
        el:'#app',
        data(){
            return{

            }
        },
        methods:{
            handleKeyUp(event){
                console.log(event.key,event)
            }
        }
    });
</script>
</body>
</html>

3. 常見的修飾符

名稱 可用版本 可用事件 說明
.stop 所有 任意 當時間出發時,阻止事件冒泡
.prevent 所有 任意 當事件觸發時,組織元素默認行爲
.capture 所有 任意 當事件觸發時,阻止事件捕獲
.self 所有 任意 限制事件僅用於節點本身
.once 2.1.4以上 任意 事件被觸發一次後即解除監聽
.passive 2.3.0以上 滾動 移動端,限制事件永不調用preventDefault()方法

4.案件修飾符

別名修飾符 鍵值修飾符 對應按鍵
.delete .8/.46 回格/刪除
.tab .9 製表
.enter .13 回車
.esc .27 退格
.space .32 空格
.left .37
.up .38.
.right .39
.down .40

5.組合修飾符

修飾符 可用版本 對應鍵
.ctrl 2.1.0以上 Ctrl鍵
.alt 2.1.0以上 Alt鍵
.shift 2.1.0以上 Shift鍵
.meta 2.1.0以上 meta鍵(Window系統上爲 田鍵)

下面的這個案例實現了按住Ctrl再點擊鼠標的事件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>組合修飾符</title>
    <style>
        .changeMouse{
            cursor: pointer;
        }
    </style>
</head>
<body>
<div id="app">
    <h1 @click.ctrl="logWithCtrl" @click="logSingle" @mouseover="addActive">按住Ctrl點擊</h1>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js"></script>
<script>
    var vue = new Vue({
        el:'#app',
        data(){
            return{
            }
        },
        methods:{
            addActive(event){
                event.currentTarget.className="changeMouse"
            },
            logSingle(event){
                if (!event.ctrlKey){
                    console.log('------------分割線-----------');
                    console.log('$event.ctrlKey:',event.ctrlKey);
                    console.log('已經點擊過了。。。')
                }else {
                    console.log('.......')
                }
            },
            logWithCtrl(event){
                console.log('------------分割線-----------');
                console.log('$event.ctrlKey:',event.ctrlKey);
                console.log('按住Ctrl,點擊的。。。')
            }
        }
        });
</script>
</body>
</html>

小白一枚,如有問題,請多多指教😃

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章