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

Vue事件修飾符使用詳細(xì)介紹

 更新時(shí)間:2022年10月19日 17:12:31   作者:橘貓吃不胖~  
在Vue中,修飾符處理了許多DOM事件的細(xì)節(jié),讓我們不再需要花大量的時(shí)間去處理這些煩惱的事情,而能有更多的精力專注于程序的邏輯處理

1 .prevent阻止默認(rèn)事件

.prevent可以阻止默認(rèn)事件的發(fā)生。

例如,阻止a標(biāo)簽的跳轉(zhuǎn)

<div id="app">
    <a  rel="external nofollow"  rel="external nofollow"  @click.prevent>百度</a>
</div>
<script>
    var vm = new Vue({
        el: "#app"
    })
</script>

除此之外,還有一種方式是使用之前的e.preventDefault()來阻止默認(rèn)行為,代碼如下:

    <div id="app">
        <a  rel="external nofollow"  rel="external nofollow"  @click="handleClick">百度</a>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                handleClick(e) {
                    e.preventDefault();
                }
            }
        })
    </script>

這時(shí)點(diǎn)擊頁面上的標(biāo)簽則不會進(jìn)行頁面的跳轉(zhuǎn)。

2 .stop阻止事件冒泡

DOM有事件冒泡的特點(diǎn),使用.stop可以阻止事件冒泡,代碼如下:

    <div id="app">
        <div @click="handleClick">
            <button @click.stop="handleClick">點(diǎn)擊提示</button>
        </div>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                handleClick(e) {
                    console.log("事件觸發(fā)");
                }
            }
        })
    </script>

或者使用e.stopPropagation()也可以阻止事件冒泡,代碼如下:

    <div id="app">
        <div @click="handleClick">
            <button @click="handleClick">點(diǎn)擊提示</button>
        </div>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                handleClick(e) {
                    e.stopPropagation(); // 阻止事件冒泡
                    console.log("事件觸發(fā)");
                }
            }
        })
    </script>

3 .once事件只觸發(fā)一次

.once可以讓事件只觸發(fā)一次,當(dāng)再次觸發(fā)事件事,該事件會失效。

例如,頁面上有一個(gè)按鈕,每次點(diǎn)擊按鈕都會彈窗提示

    <div id="app">
        <button @click="handleClick">點(diǎn)擊</button>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                handleClick() {
                    alert("點(diǎn)擊事件");
                }
            }
        })
    </script>

如果為click事件加上事件修飾符.once,那么該彈窗只會出現(xiàn)一次,再次點(diǎn)擊按鈕則不會彈窗,示例代碼如下:

    <div id="app">
        <button @click.once="handleClick">點(diǎn)擊</button>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                handleClick() {
                    alert("點(diǎn)擊事件");
                }
            }
        })
    </script>

4 .capture使用事件捕獲模式

在DOM事件流中,我們都知道DOM事件會先捕獲然后冒泡,在冒泡階段才會處理事件,因此在下面的示例中,點(diǎn)擊按鈕,會先觸發(fā)handleClick2()輸出2,然后觸發(fā)handleClick1()輸出1,代碼如下:

    <div id="app">
        <div @click="handleClick1">
            <button @click="handleClick2">點(diǎn)擊</button>
        </div>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                handleClick1() {
                    console.log(1);
                },
                handleClick2() {
                    console.log(2);
                }
            }
        })
    </script>

但是如果我們想在事件捕獲時(shí)就處理事件,可以使用.capture來處理,這樣點(diǎn)擊按鈕時(shí),會先觸發(fā)handleClick1()輸出1,然后觸發(fā)handleClick2()輸出2,示例代碼如下:

    <div id="app">
        <div @click.capture="handleClick1">
            <button @click="handleClick2">點(diǎn)擊</button>
        </div>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                handleClick1() {
                    console.log(1);
                },
                handleClick2() {
                    console.log(2);
                }
            }
        })
    </script>

5 .self當(dāng)e.target是當(dāng)前操作的元素才觸發(fā)事件

在冒泡或者捕獲時(shí),e.target會指向觸發(fā)事件的對象。例如,在下面代碼中,點(diǎn)擊按鈕,雖然由于事件冒泡會將上面div的事件也進(jìn)行觸發(fā),但是它們的e.target都是觸發(fā)事件的按鈕。

    <div id="app">
        <div @click="handleClick">
            <button @click="handleClick">點(diǎn)擊</button>
        </div>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                handleClick(e) {
                    console.log(e.target);
                }
            }
        })
    </script>

當(dāng)使用.self來修飾時(shí),那么只有當(dāng)觸發(fā)事件的對象和當(dāng)前操作的元素一致時(shí),才會觸發(fā)事件,代碼如下:

    <div id="app">
        <div @click.self="handleClick">
            <button @click="handleClick">點(diǎn)擊</button>
        </div>
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                handleClick(e) {
                    console.log(e.target);
                }
            }
        })
    </script>

在上面的代碼中,點(diǎn)擊按鈕后只觸發(fā)了一次handleClick()事件,這是因?yàn)橥饷娴膁iv并不是當(dāng)前的e.target,因此不會觸發(fā)handleClick()事件。

6 .passive事件的默認(rèn)行為立即執(zhí)行

.passive可以讓事件的默認(rèn)行為立即執(zhí)行,無需等待事件回調(diào)執(zhí)行完畢,一般在移動端會使用多一些。

7 .鍵盤事件

Vue為我們提供了常用的鍵盤事件,具體如下:

修飾符鍵盤事件
.enter按下回車鍵后觸發(fā)
.delete按下backspace或者delete鍵觸發(fā)
.esc按下esc鍵后觸發(fā)
.space按下空格鍵后觸發(fā)
.up按下上鍵后觸發(fā)
.down按下下鍵后觸發(fā)
.left按下左鍵后觸發(fā)
.right按下右鍵后觸發(fā)
.tab按下tab鍵觸發(fā),該按鍵配合keydown事件使用,否則會切走焦點(diǎn)

示例:按下backspace或者delete鍵時(shí)輸出輸入框中的內(nèi)容

    <div id="app">
        <input type="text" @keyup.delete="demo">
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                demo(e) {
                    console.log(e.target.value);
                }
            }
        })
    </script>

但是如果我們想為除了上面的鍵之外的鍵綁定事件,這時(shí)就可以使用按鍵原始的key值(注意不是keyCode)去綁定事件。鍵的key值可以通過e.key來獲取到,比如說獲取q鍵的key值,代碼如下:

    <div id="app">
        <input type="text" @keyup="getQ">
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                getQ(e) {
                    console.log(e.key); // 輸出key值
                    console.log(e.keyCode); // 輸出keyCode
                }
            }
        })
    </script>

可以看到q的key值是q,keyCode是81,我們使用q可以為該鍵綁定事件,代碼如下:

    <div id="app">
        <input type="text" @keyup.q="qClick">
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                qClick() {
                    console.log("按下了q鍵");
                }
            }
        })
    </script>

除了以上兩種方式外,還有兩種方式可以為鍵盤綁定事件:

(1)使用keyCode綁定事件,例如回車鍵的keyCode為13,按下回車鍵輸出輸入框中數(shù)字,不過該方式并不推薦,因?yàn)椴煌逆I盤keyCode可能不同,示例代碼如下:

    <div id="app">
        <input type="text" @keydown.13="demo">
    </div>
    <script>
        var vm = new Vue({
            el: "#app",
            methods: {
                demo(e) {
                    console.log(e.target.value);
                }
            }
        })
    </script>

(2)使用定制按鍵別名的方式綁定事件,語法如下:

Vue.config.keyCodes.自定義鍵名 = 鍵碼;

為回車鍵綁定事件,示例代碼如下:

    <div id="app">
        <input type="text" @keyup.huiche="demo">
    </div>
    <script>
        Vue.config.keyCodes.huiche = 13; // 綁定回車事件
        var vm = new Vue({
            el: "#app",
            methods: {
                demo(e) {
                    console.log(e.target.value);
                }
            }
        })
    </script>

注意:

  • 對于大寫鎖定鍵來說,它的key值是CapsLock,因此在為它綁定事件時(shí),必須將組成它的兩個(gè)單詞小寫,并且使用“-”將他們連接,也就是說,它使用caps-lock來綁定事件
  • ctrlalt、shiftmeta鍵是系統(tǒng)修飾鍵,如果為它們綁定keyup事件不會立即起作用,它們起作用的方式為:按下系統(tǒng)修飾鍵——>按下其他鍵——>釋放其他鍵,這樣事件才會被觸發(fā)

到此這篇關(guān)于Vue事件修飾符使用詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Vue事件修飾符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue封裝全局過濾器Filters的步驟

    Vue封裝全局過濾器Filters的步驟

    這篇文章主要介紹了Vue封裝全局過濾器Filters的步驟,通過封裝vue全局過濾器實(shí)現(xiàn)filters的統(tǒng)一管理。感興趣的朋友可以了解下
    2020-09-09
  • vue-video-player?播放m3u8視頻流的實(shí)現(xiàn)

    vue-video-player?播放m3u8視頻流的實(shí)現(xiàn)

    本文主要介紹了vue-video-player?播放m3u8視頻流的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • vue中v-model對select的綁定操作

    vue中v-model對select的綁定操作

    這篇文章主要介紹了vue中v-model對select的綁定操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 淺析Vue中渲染函數(shù)的使用

    淺析Vue中渲染函數(shù)的使用

    在Vue中,渲染函數(shù)是一種用于動態(tài)生成組件的函數(shù),可以將組件的模板代碼編寫為JavaScript代碼,并在運(yùn)行時(shí)進(jìn)行渲染,下面我們就來看看它的具體用法吧
    2023-08-08
  • vue如何從接口請求數(shù)據(jù)

    vue如何從接口請求數(shù)據(jù)

    本篇文章主要介紹了vue如何從接口請求數(shù)據(jù) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue3路由配置以及路由跳轉(zhuǎn)傳參詳解

    vue3路由配置以及路由跳轉(zhuǎn)傳參詳解

    路由跳轉(zhuǎn)的同時(shí)傳遞參數(shù)是比較常見的,下面這篇文章主要給大家介紹了關(guān)于vue3路由配置以及路由跳轉(zhuǎn)傳參的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Vue3 SFC 和 TSX 方式自定義組件實(shí)現(xiàn) v-model的詳細(xì)過程

    Vue3 SFC 和 TSX 方式自定義組件實(shí)現(xiàn) v-model的詳細(xì)

    v-model 是 vue3 中的一個(gè)內(nèi)置指令,很多表單元素都可以使用這個(gè)屬性,如 input、checkbox 等,咱可以在自定義組件中實(shí)現(xiàn) v-model,這篇文章主要介紹了Vue3 SFC 和 TSX 方式自定義組件實(shí)現(xiàn) v-model,需要的朋友可以參考下
    2022-10-10
  • 在vue中實(shí)現(xiàn)清除echarts上次保留的數(shù)據(jù)(親測有效)

    在vue中實(shí)現(xiàn)清除echarts上次保留的數(shù)據(jù)(親測有效)

    這篇文章主要介紹了在vue中實(shí)現(xiàn)清除echarts上次保留的數(shù)據(jù)(親測有效),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue+Java 通過websocket實(shí)現(xiàn)服務(wù)器與客戶端雙向通信操作

    Vue+Java 通過websocket實(shí)現(xiàn)服務(wù)器與客戶端雙向通信操作

    這篇文章主要介紹了Vue+Java 通過websocket實(shí)現(xiàn)服務(wù)器與客戶端雙向通信操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue實(shí)現(xiàn)登錄時(shí)的圖片驗(yàn)證碼

    vue實(shí)現(xiàn)登錄時(shí)的圖片驗(yàn)證碼

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

最新評論