vue組件中添加@click失效問題及解決
vue組件中添加@click失效
遇到了一個非常蠢的bug,在vue組件中添加click事件無效,@click.native也無效
想添加一個click事件來切換歌曲
<div class="playlist"> <div class="playItem" v-for="(item,i) in playlist.tracks" :key="item.id" @click="setPlayIndex(i)"></div> </div>
結(jié)果click事件一直無效,試了@click.native也無效,總之很多網(wǎng)上別的方法都試過了都不行...
查看事件監(jiān)聽器也有click,但是是怎么回事呢?
原來是!
我之前在歌單組件playlist里面寫了個z-index:-1;
.playlist{ width: 7.5rem; padding: 0 0.4rem; background: linear-gradient(rgba(255,255,255,.7),rgba(255,255,255,1)); position: relative; top: -0.5rem; border-top-right-radius: 1rem; border-top-left-radius: 1rem; z-index:-1; }
然后其實一直點擊不到而已!
刪掉就好了。
@click失效?@click.native
問題描述
練習uniapp開發(fā)的時候,封裝好了一個組件,但是給組件綁定了@click事件后,事件卻沒有執(zhí)行。
主要代碼如下
<div class="row" v-for="item in newsArr" :key="item.id"> <newsbox :item="item" @click="goDetail(item)"></newsbox> </div> //跳轉(zhuǎn)到詳情頁 goDetail(item){ uni.navigateTo({ url:`/pages/detail/detail?cid=${item.classid}&id=${item.id}` }) },
newsbox是我自己封裝的一個組件,問題就出在這兒,newsbox是子組件,想要直接在父組件觸發(fā)click方法,直接寫上@click是不能觸發(fā)方法的。
這時候需要在@click.native就可以解決了,可是為什么呢
官網(wǎng)的解釋
你可能想在某個組件的根元素上監(jiān)聽一個原生事件。可以使用 v-on 的修飾符 .native 。
通俗點講
就是在父組件中給子組件綁定一個原生的事件,就將子組件變成了普通的HTML標簽,不加’. native’事件是無法觸 發(fā)的。
可以理解為該修飾符的作用就是把一個vue組件轉(zhuǎn)化為一個普通的HTML標簽,并且該修飾符對普通HTML標簽是沒有任何作用的。
更細一點來講
是因為使用.native之后父級組件可以像處理原生的DOM事件一樣通過 v-on 監(jiān)聽子組件實例的任意事件(@即為v-on:的簡寫),如果不加natvie,會認為監(jiān)聽的是來自子組件自定義的事件,然而子組件內(nèi)也沒有使用$emit()來將子組件的觸發(fā)事件拋出,因此onSubmit()方法沒有執(zhí)行。
這里也引出了對綁定@click無效有兩種解決方法
- 在組件上綁定@click.native=”XXX”,
- 子組件中添加 this.$emit (“click” ,value) 方法 將子組件的值傳到父組件。
但是這種方法相對麻煩,比如組件中有多個事件,需要重復添加 $emit () 方法。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
element?ui設置table自適應表格寬,不自動換行問題
這篇文章主要介紹了element?ui設置table自適應表格寬,不自動換行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12在vue中使用SockJS實現(xiàn)webSocket通信的過程
最近接到一個業(yè)務需求,需要做一個聊天信息的實時展示的界面,下面小編把實現(xiàn)過程記錄下來,對vue中使用SockJS實現(xiàn)webSocket通信的相關(guān)知識感興趣的朋友一起看看吧2018-08-08vue源碼解析computed多次訪問會有死循環(huán)原理
這篇文章主要為大家介紹了vue源碼解析computed多次訪問會有死循環(huán)原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04Vue配合iView實現(xiàn)省市二級聯(lián)動的示例代碼
本篇文章主要介紹了Vue配合iView實現(xiàn)省市二級聯(lián)動的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07