原文:https://blog.csdn.net/CarryBest/article/details/79959389app
今天作项目时,用elementUI框架,须要下拉框隐藏时出发某个函数,用了visible-change这个函数,发现点击时会触发两次我本身定义的函数,看了下官网的解释 :下拉框出现/隐藏时触发 若是只想在下拉框隐藏时触发该怎么作呢?下面是解决办法:
官网定义:
Select Events框架
@visible-change 函数里面传递两个参数(第一个为回调参数,第二个为本身定义的参数)函数
前台页面:this
<el-select v-model="AREACODE" placeholder="请选择" clearable @visible-change="changeValue1($event,AREACODE)"> <el-option v-for="item in AreaOptions" :key="item.AREACODE" :label="item.NAME" :value="item.AREACODE"> </el-option></el-select>
JS:url
changeValue1:function(callback,vc){ //只有回调参数为false时才触发 ctx.getAreaListDataSearch(vc,1)这个函数; console.log("回调参数"+callback); if(!callback){ var ctx = this; ctx.AREACODE2='请选择'; if(vc!=""){ ctx.show2 = true; ctx.getAreaListDataSearch(vc,1); } } },
这样就解决了这个函数会默认调用两次你本身定义函数的问题
spa
备注:.net
el-select的visible-change="changeValue1($event,AREACODE) 会传递两个参数,即把选中的值也会传给函数,可是el-cascader的不会传这个值,那么如何获取选中的值呢,code
方法一:orm
判断this.$refs['cascaderAddr'].getCheckedNodes()非空列表,使用this.$refs['cascaderAddr'].getCheckedNodes()[0] 参考:https://blog.csdn.net/lijiabinbbg/article/details/97396812blog
方法二:使用change
<el-cascader id="el-cascader" v-model.trim="formTemp.service" :disabled="currentStep!='apply'" :options="serviceOptions" :props="{ expandTrigger: 'hover' }" :show-all-levels="true" separator="." @change="handleServiceSelect" > </el-cascader>
在methods中定义
handleServiceSelect(serviceInfo) { // 这块会自动传这个serviceInfo值的注意var serviceKey = serviceInfo.join('.') },