Vue中的native修飾符解析


native修飾符

一般來說,vue本身提供了v-on:eventName這個語法來提供vue的時事件綁定,通常使用@eventName這個語法糖代替上述語法。

使用過程中沒有考慮@eventName作用標簽的類型,因為一般將該語法用在html原生標簽,在組件標簽上使用的時候,出現了@click="handler"無法觸發handler事件。

以下為事故現場:

<my-component @click="handler"><my-component/>

使用該組件的vue實例
注:handler( )為ES6語法,等同於handler:function( )

    methods:{
        handler(){
            console.log('click me');
        }
    }

經過面向搜索編程(百度)
發現默認@eventName使用在組件上是表示綁定了組件自定義eventName
要綁定原生DOM事件,需要使用.native來修飾@eventName,即 @eventName.native 語法

那么自定義事件又是怎么一肥事呢?

一般來說,自定義事件用於Vue自定義組件,用於內部DOM元素事件響應時,開放給組件外部的API。

specially,他需要組件內部使用$emit('defineEventName',value)這個方法來觸發,這也表明了一開始我的錯誤想法,以為是觸發組件內部的原生DOM的click方法,這里指明了使用@evnetName作用在組件上,不會觸發原生DOM事件,即一開始的無反應。

這里完成了一個@click="handler",而不是用native修飾符的例子,基於Vue自定義事件

my-component組件內部實現

    <template>
        <button @click="in">click me</button>
    </template>
    methods:{
        in(){
            this.$emit('click')
        }
    }

這個例子在點擊按鈕click me之后能夠通過$emit('click')觸發組件自定義的click事件以調用使用該組件上的Vue實例上的handler方法,打印出click me。

在組件上想要觸發@click事件,組件內部需要有一個可以觸發原生click事件的元素,並且這個原生click事件綁定一個用於提交emit('click')到組件上的@click函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM