el-select組件綁定change事件的踩坑記錄
el-select組件綁定change事件踩坑
要注意區(qū)分elementUI組件(比如el-select、el-button、el-input等組件)的focus、click、change等事件和DOM的focus、click、change原生事件,二者是不一樣的。
如果要在element組件上觸發(fā)原生事件,一律都得加.native修飾符,否則無法觸發(fā)事件。
但是要注意很多elementUI的組件本身封裝了focus、click、change等事件,比如el-button的click事件,是經(jīng)過elementUI封裝過的,所以給el-button綁定click事件時(shí),不需要加.native修飾符,el-input的@focus事件也是同理。
今天踩了一個(gè)坑,在給el-select綁定change事件時(shí),沒搞清楚該change事件是elementUI封裝過的change事件@change=“changeGateway(event)”,發(fā)現(xiàn)event一直是和選中的option的value值保持一致,按照網(wǎng)上博客寫的event.target.value拿到的值一直都是undefined,最后才發(fā)現(xiàn),博客里的select是原生的select,而我寫的是el-select,給el-select綁定的change事件不是dom原生的change事件,而是elementUI封裝過了的change事件,回調(diào)函數(shù)的參數(shù)是下拉列表目前的選中值,所以$event才一直和選中的option的value值保持一致。
另外要注意由于el-select組件已經(jīng)封裝了change事件,就無法再綁定原生的change事件,如果對(duì)el-select綁定change事件像@change.native這樣寫,change事件是不會(huì)觸發(fā)的!

再次強(qiáng)調(diào):
elementUI組件如果已經(jīng)封裝過click、change、focus等事件,則無法再綁定DOM原生的click、change、focus事件,即使加.native修飾符也沒用。

但今天來了個(gè)需求,在點(diǎn)擊選擇關(guān)聯(lián)網(wǎng)關(guān)的下拉列表時(shí),不僅要傳網(wǎng)關(guān)name參數(shù)給后端,還要在改變option的同時(shí)再額外多傳一個(gè)gatewayIp參數(shù)給后端,這個(gè)gatewayIp要在下拉列表option的數(shù)據(jù)里面拿,起初想通過給el-select組件綁定change事件拿到選中的option的完整數(shù)據(jù),最終發(fā)現(xiàn)做不到,那樣只能拿到選中的option的value值(因?yàn)閑lementUI封裝的change事件的回調(diào)參數(shù)就是下拉列表目前的選中值,見上圖),最后的實(shí)現(xiàn)思路是給el-option綁定原生click事件拿到選中的option的完整數(shù)據(jù)item
代碼如下:
<el-form-item label="關(guān)聯(lián)網(wǎng)關(guān)" prop="bindGateName">
<el-select v-model="form.bindGateName" placeholder="請(qǐng)選擇" clearable>
<el-option v-for="item in bindGates" :label="item.gateWayInfo.name" :value="item.gateWayInfo.name" @click.native="changeGateway(item)" :key="item.gateWayId"></el-option>
</el-select>
</el-form-item>
changeGateway(data){
// console.log(data) //此data是選中的那個(gè)option的完整數(shù)據(jù)item
this.form.gateWayIp = data.gateWayInfo.ip;
},
el-select實(shí)現(xiàn)change事件
官網(wǎng)提供了el-select的change事件,但是并沒有提供使用示例,但是最近在vue項(xiàng)目中卻要使用到。
直接上代碼,HTML部分
<el-select @change="selectChanged" v-model="devType" size=small> ?? ?<el-option v-for="item in devTypes" :key="item" :label="item" :value="item"></el-option> </el-select>
js部分
data() {
? return {
? ? devType: '',
? ? devTypes: []
? }
},
?
methods: {
? selectChanged(value) {
?? ?console.log(value)
? }
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
element?select必填項(xiàng)驗(yàn)證回顯問題的解決
本文主要介紹了element?select必填項(xiàng)驗(yàn)證回顯問題的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
vuex vue簡(jiǎn)單使用知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了關(guān)于vuex vue簡(jiǎn)單使用知識(shí)點(diǎn)總結(jié),有需要的朋友們可以參考下。2019-08-08
vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染
這篇文章主要介紹了vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
vue 綁定對(duì)象,數(shù)組之?dāng)?shù)據(jù)無法動(dòng)態(tài)渲染案例詳解
這篇文章主要介紹了vue 綁定對(duì)象,數(shù)組之?dāng)?shù)據(jù)無法動(dòng)態(tài)渲染案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
在vue項(xiàng)目中(本地)使用iconfont字體圖標(biāo)的三種方式總結(jié)
這篇文章主要介紹了在vue項(xiàng)目中(本地)使用iconfont字體圖標(biāo)的三種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
Vue編寫可顯示周和月模式的日歷 Vue自定義日歷內(nèi)容的顯示
這篇文章主要為大家詳細(xì)介紹了Vue編寫可顯示周和月模式的日歷,Vue自定義日歷內(nèi)容的顯示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
vue實(shí)現(xiàn)移動(dòng)端拖拽懸浮按鈕
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動(dòng)端拖拽懸浮按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07

