解决vueelementUI使⽤el-select时change事件的触发问题如下所⽰:
<el-select v-model="level" size="mini" placeholder="请选择" :change="selectChange()">
<el-option v-for="item in select" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
我们需要的是选择之后才触发,但是这样写你会发现,页⾯初始化的时候会触发多次,选择之后⼜会触发多次,原因是我们⽤错了标签,应该⽤ @change="selectChange()
<el-select v-model="level" size="mini" placeholder="请选择" @change="selectChange()">
<el-option v-for="item in select" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
这样写就可以了,v-bind的缩写是:,v-on的缩写是@,这⾥是触发事件,应该⽤@,
补充知识:为elment-ui的el-select选择器添加onblur失焦事件产⽣的问题
如下所⽰:
<div class="oneline">
<span >⽤户编号:</span>
<div class="block left">
<el-select
:no-match-text="msg"
:popper-append-to-body=false
placeholder='请选择'
v-model="value" filterable popper-class='contentadd_select'
ref='select'>
<el-option
v-for="item in users"
:
key="item.accont"
:label="item.accont"
:value="item.accont">
</el-option>
</el-select>
</div>
</div>
input绑定onblur事件所需要实现的功能是当查询输⼊时,如果⽤户输⼊的数据是选项⾥⾯不匹配的,则返回显⽰⽆匹配数据。
JS代码如下
this.$refs.select.$ference.$blur = ()=>{
let haveitem=0;
for(let i=0;i<this.users.length;i++){
if(this.$refs.select.query==this.users[i].accont){
haveitem++;
}
}
if(!haveitem){
this.value='⽆匹配数据'
// this.msg=' '
}
}
上述代码的this.$refs.select.query是选择器输⼊时查询框绑定的值。
选择器属性有filterable属性时为可查询选择。
使⽤开发者⼯具测试时发现el-select选择器数据绑定的对象value跟查询输⼊时的数据对象不是同⼀个,然后查看el-select源码得知查询输⼊时的数据绑定在select.query上。
本来el-select有个blur事件绑定函数属性。但是使⽤后发现有时候失焦事件并不能触发⽣效,也就导致所绑定的函数不能执⾏。
看了源码得知blur这个事件函数有个定时器什么的,看不太懂,但是知道不是浏览器原⽣的失焦事件。
于是⽤vue的ref定位到该选择器来实现绑定原⽣onblur事件,则可以避免这个问题。
也可以使⽤操作dom查询利⽤选择器定位到这个选择器进⾏失焦事件绑定。
以上这篇解决vue elementUI 使⽤el-select 时 change事件的触发问题就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论