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)文章
Vue+Openlayer實現(xiàn)圖形的拖動和旋轉(zhuǎn)變形效果
Openlayer具有自己的擴展插件ol-ext,可以用來實現(xiàn)圖形的拖拽、旋轉(zhuǎn)、縮放、拉伸、移動等操作,本文將主要介紹通過Openlayer實現(xiàn)圖形的拖動和旋轉(zhuǎn),需要的同學可以學習一下2021-11-11
vue3中使用pinia(大菠蘿)狀態(tài)管理倉庫的項目實踐
本文主要介紹了vue3中使用pinia(大菠蘿)狀態(tài)管理倉庫,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07
windows下vue-cli及webpack搭建安裝環(huán)境
這篇文章主要介紹了windows下vue-cli及webpack搭建安裝環(huán)境,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04
解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開的問題
今天小編就為大家分享一篇解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue3動態(tài)路由刷新出現(xiàn)空白頁的原因與最優(yōu)解
頁面刷新白屏其實是因為vuex引起的,由于刷新頁面vuex數(shù)據(jù)會丟失,這篇文章主要給大家介紹了關(guān)于vue3動態(tài)路由刷新出現(xiàn)空白頁的原因與最優(yōu)解的相關(guān)資料,需要的朋友可以參考下2023-11-11

